Linux grep
基本用法
grep str file
在文件file中查找字符串str
grep -n str file
使用-n选项查找字符串str
常用选项
-i
不区分大小写(默认是区分大小写的)
-n
输出该字符串所在行的行号
--color
查找到的字符串高亮显示(ubuntu默认高亮)
-c
统计符合条件的总行数
-o
只输出匹配到的关键字,会将一行中匹配到的多个关键字分行打印,比如某一行匹配到了2个结果就会打印两行
-Bn
before,符合条件所在行之前的n行,必须有n
-An
after,符合条件所在行之后的n行,必须有n
-Cn
context,-A-B
的结合
-w
word 搜索的字符串作为一个独立的单词才会被匹配到
-v
搜素不包含某个字符串的行
-e
同时匹配多个目标,多个目标之间存在“或”关系,即匹配任意一个都算成功,例如grep -e abc -e xyz file
在file文件中如果某一行包含abc或xyz都可以匹配成功
-q
quiet 无论匹配到还是没有匹配到都不会输出任何信息,可以使用echo $?
查看匹配结果,如果输出0则表示匹配到了,如果输出1则表示没有匹配到
-P
使用兼容perl的正则引擎
-E
使用扩展正则表达式
grep扩展
grep
支持基本正则表达式
egrep
支持扩展正则表达式,相当于grep -E
fgrep
不支持正则表达式,只能匹配写死的字符串,但是匹配速度非常快
如果要查找特殊字符需要使用转义字符\
,例如grep "\-" file
在file文件中查找包含-
的行
传递输入或输出
可以使用管道符|
传递输入给grep或者将grep的输出传给其他命令
ls | grep txt
查找当前文件夹下,文件名包含txt
的文件
ls | grep txt | sort
对当前文件夹下,文件名包含txt
的文件进行排序
ls | grep txt | xargs rm
将当前文件夹下,文件名包含txt
的文件删除