grep对文本进行查找,匹配相应模式,找到匹配模式后,打印相应行
grep格式:
grep [选项] 正则表达式(即相应模式) [文件] 注意:正则表达式中的字符串最好用“”括起来 调用变量也要用“”括起来 正则表达式本身最好用''括起来 防止出错
选项:
-c 只输出匹配行的计数(即匹配的有多少行)
eg: ]# grep dec data.f data.g
data.f:219 dec 2CC1999 CAD 23.00 PLV2C 68
data.g:48 dec 3bc1997 lpsx 68.00 LVX2A 138
data.g:219 dec 2cc1999 CAD 23.00 PLV2C 68
]# grep -c dec data.f data.g
data.f:1
data.g:2
-i 表达式中不分大小写Ignore case distinctions in both the PATTERN and the input files.
-h 查询多个文件的时候 不显示结果是哪个文件中的
eg: ]# grep -h dec data.f data.g
219 dec 2CC1999 CAD 23.00 PLV2C 68
48 dec 3bc1997 lpsx 68.00 LVX2A 138
219 dec 2cc1999 CAD 23.00 PLV2C 68
]# grep dec data.f data.g
data.f:219 dec 2CC1999 CAD 23.00 PLV2C 68
data.g:48 dec 3bc1997 lpsx 68.00 LVX2A 138
data.g:219 dec 2cc1999 CAD 23.00 PLV2C 68
-l 查询多个文件时只显示包含匹配字符的文件的文件名(不显示结果)
eg: ]# grep -l Dec data.f data.g
data.f
]# grep Dec data.f data.g
data.f:48 Dec 3BC1997 LPSX 68.00 LVX2A 138
-n 显示匹配的行和行号
-s 不显示不存在或者无匹配文本的error信息
-v 显示不包含匹配文本的所有行
-E 使用扩展的正则表达式模式
eg:]# grep '219|216' data.f data.g
]# grep -E '219|216' data.f data.g
data.f:219 dec 2CC1999 CAD 23.00 PLV2C 68
data.f:216 sept 3ZL1998 USP 86.00 KVM9E 234
data.g:219 dec 2cc1999 CAD 23.00 PLV2C 68
data.g:216 sept 3zl1998 USP 86.00 KVM9E 234
grep不只是用于文件 亦可用于字符串
eg: ]# str="last sunday i went to a therate"
]# echo $str|grep "went"
last sunday i went to a therate
egrep
-f 可以以一个文件作为保存的字符串 然后传给egrep作为参数 ps是建立的一个文本文件,文件名为ps,内 容就是 dec
eg: ]# egrep ps data.f data.g
data.g:48 dec 3bc1997 lpsx 68.00 LVX2A 138
data.g:47 oct 3zl1998 lpsx 43.00 KVM9D 512
]# egrep -f ps data.f data.g
data.f:219 dec 2CC1999 CAD 23.00 PLV2C 68
data.g:48 dec 3bc1997 lpsx 68.00 LVX2A 138
data.g:219 dec 2cc1999 CAD 23.00 PLV2C 68
阅读(1174) | 评论(0) | 转发(0) |