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
案例三:只输出匹配到的部分
[root@localhost test]# grep -o '^Th' file01.txt
案例四:统计文本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