【Linux】grep命令

1.用途

grep允许对文本进行模式查找,如果找到匹配模式,grep打印包含模式的所有行。

2.全称

grep全称是Global Regular Expression Print

3.参数

以下是常用的grep参数:

-c :只输出匹配行的计数

-i :不区分大小写(只适用于单字符)

-h :查询多个文件时不显示文件名

-l :查询多个文件时只输出包含匹配字符的文件名

-n :显示匹配行及行号

-s :不显示不存在或无匹配文本的错误信息。

-v :显示不包含匹配文本的所有行

一般格式为:

grep [选项] 基本正则表达式 [文件] (这里的正则表达式可为字符串)

4.特别说明

(1)在grep命令中输入字符串参数时,最好将其用双引号括起来。例如:"Myname",这样做主要有2个原因:

  • 防止被误解为shell命令
  • 可以用来查找多个单词组成的字符串

(2)在调用变量时候,也可以用双引号,诸如:grep "$var" 文件名 ;如果不这样,不会返回结果。

(3)在调用匹配模式的时候,使用单引号

5.案例说明

(1)查询多个文件

在当前目录下所有.dat文件查找字符串"20190101 GT"

$ grep "20190109 GT" *.dat

(2)行匹配

$ grep –c "Jack" file.txt

返回值为匹配到的行数,假如返回2,则表示有2行记录被匹配到。

(3)行数

$ grep –n "Jack" file.txt

第一列输出匹配到的记录在文件file.txt中的行数

(4)显示非匹配行

$ grep –v "Jack" file.txt

显示不包含Jack这个字符串的行

6.具体案例

案例一:从stdin中匹配字符girl

[root@localhost test]# echo -e "this is my girl friend" | grep girl

案例二:也可以从多个文件中搜索

[root@localhost test]# grep '^Th' file01.txt file02.txt file03.txt

image


案例三:只输出匹配到的部分

[root@localhost test]# grep -o '^Th' file01.txt

image


案例四:统计文本file01.txt中包含Th开头的字符串的行数

[root@localhost test]# grep -c '^Th' file01.txt
2

案例五:统计匹配项的数量

[root@localhost test]# echo -e "1,23,3,hello, My name is Alice" | grep -o  "[0-9]" | wc -l
4

posted @ 2018-10-06 15:29  OLIVER_QIN  阅读(413)  评论(0编辑  收藏  举报