grep
用于过滤的命令
参数 |
作用 |
-i(常用) |
搜索时,忽略大小写 |
-c(常用) |
统计过滤成功的行数 |
-l |
只列出符合匹配的文件名,不列出具体的匹配行 |
-n(常用) |
列出所有的匹配行,显示行号 |
-h |
查询多文件时不显示文件名 |
-s |
不显示不存在、没有匹配文本的错误信息 |
-v |
显示不包含匹配文本的所有行(取反) |
-w(常用) |
匹配整词 |
-x |
匹配整行 |
-r |
递归搜索 |
-q(常用) |
禁止输出任何结果,已退出状态表示搜索是否成功 |
-b |
打印匹配行距文件头部的偏移量,以字节为单位 |
-o |
与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位 |
-A 2 |
显示的时候加上后两行 |
-B 2 |
显示的时候加上前两行 |
-C 2 |
显示的时候增加前后两行 |
#语法
grep [选项] [正则] [文件]
#案例
[root@tencent_cloud test]# grep -rl "nginx" /etc/nginx/
/etc/nginx/koi-utf
/etc/nginx/nginx.conf
/etc/nginx/win-utf
/etc/nginx/fastcgi_params
#可以通过关键字查找相关的配置文件,当然也可以用rpm -qc nginx
正则表达式用法
符号 |
作用 |
^ |
匹配从头开始对(中括号外)(中括号内是取反的意思) |
$ |
匹配从尾开始对 |
. |
匹配任意一个字符 |
* |
左边的字符出现0次或无穷次 |
.* |
匹配所有的,默认是匹配到最远的 |
.*? |
匹配所有的,改为非贪婪匹配,需要指定-P |
[ ] |
匹配指定范围的任意一个字符 |
+ |
左边的字符出现1次或无穷次(egrep / grep -E才好用) |
[^] |
对字符组内的每个字符取反(不匹配字符组内的每个字符) |
[] |
非字符组内的字符开头的行 |
拓展正则
# 扩展正则元字符
+ 匹配一个或多个前导字符 [a-z]+ove
? 匹配零个或一个前导字符 lo?ve
a|b 匹配a或b love|hate
() 组字符 love(able|rs) (egon)+
(..)(..)\1\2 标签匹配字符 (love)able\1er
x{n} x出现n次 e{3}
x{n,} x出现n次至无穷次 e{3,}
x{n,m} x出现n次至m次 e{3,6}
\< 单词头 单词一般以空格或特殊字符做分隔,连续的字符串被当做单词
\> 单词尾
[root@egon ~]# netstat -an |grep -w 80
tcp6 0 0 :::80 :::* LISTEN
[root@egon ~]# netstat -an |grep '\<80\>'
tcp6 0 0 :::80 :::* LISTEN
[root@egon ~]# netstat -an |grep '\b80\b'
tcp6 0 0 :::80 :::* LISTEN
# 若想使用扩展正则
grep加-E 或 egrep 或转义\
sed 加 -r 参数 或转义
AWK 直接支持大多数扩展正则,更多支持需要加选项--posix选项