首页 Linux基础Linux命令正文

Linux命令-grep命令

Jean Linux命令 2018-11-01 1000 0 Linux命令
grep (过滤)核心命令之一,(三剑客老三)
-v 排除
-e 多个选项的匹配,逻辑or的关系
-E 扩展正则表达式,比如多个过滤,中间用|隔开 比如grep -E "A|b|C" test.txt
-i 不区分大小写
-w 匹配整个单词,如果是字符串包含这个单词,则不做匹配,相当于\b过滤内容\b \b单词边界 \B非单词边界
-o 只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行
-R 递归查询例子:grep -R "file" * 当前目录下查找,加不加* 都可以,或者其他路径
-n 显示结果所在行号例子:grep -n ".*" file.txt
-c 统计匹配到的行数
-q 静默过滤,不输出任何信息
-P 使用兼容perl正则引擎
-A 匹配内容,并显示该行之后的第num行 例子:grep "20" -A10 file.txt注:这个20是内容,不是行号,后面的10是行数
-B 匹配内容,并显示该行之前的第num行 例子:grep "30" -B10 file.txt
-C 匹配内容,并显示该行之前后的第num行  例子:grep "25" -C5 file.txt
--color=auto 对过滤的内容加上颜色
小经验:
1.比如检测mysql服务状态的时候,通过shell脚本过滤mysql服务,脚本的名字不能带有mysql,否则会不准确。
2.grep两次不同的内容,如果第二次没有grep的内容,那么就没有输出信息了,例如ps -ef|grep java|grep server
3.grep "data1" *.conf 只能过滤当前目录下的conf文件,可以通过find查找当前目录所有文件,在grep
4.grep 反斜杠需要用单引号,如grep '\\' file.txt
5.过滤+ ?这些符号,直接过滤,不需要加反斜杠,不然加了就代表正则了
ifconfig eth0|grep -o "addr:[0-9.]*"|grep -o "[0-9.]*"   取ip地址
grep -P 使用的简写格式符号
\d 表示任意单个0到9的数字 grep -P "\d" file.txt
\D 表示任意单个非数字字符
\t 表示匹配单个横向制表符
\s 表示匹配单个空白字符,包括空格,tab制表符
\S 表示匹配单个非空白字符
grep "\(l.\{3\}\) aa \1" 3.txt  --color grep 的后向引用,跟sed里的\1一样

评论