grep常用的相关参数

Zss 发表于:

一.统计相匹配的数量,计算符合样式的列数  -c

[root@zss home]# ifconfig|grep -c inet
3

或者配合wc -l来使用也可以实现计数

[root@zss home]# ifconfig|grep inet|wc -l
3

二.指定一个匹配规则  -e

[root@zss home]# ifconfig|grep -e "inet"
        inet 172.18.201.209  netmask 255.255.240.0  broadcast 172.18.207.255
        inet 127.0.0.1  netmask 255.0.0.0
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255

那么可以使用多个-e参数来指定多个匹配的规则,他们之间的关系为  或

[root@zss home]# ifconfig|grep -e "inet" -e "ether"
        inet 172.18.201.209  netmask 255.255.240.0  broadcast 172.18.207.255
        ether 00:16:3e:0c:b2:b3  txqueuelen 1000  (Ethernet)
        inet 127.0.0.1  netmask 255.0.0.0
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:68:20:30  txqueuelen 1000  (Ethernet)

或者另外的一种方式使用 -E   “规则 | 规则 | …”

[root@zss home]# ifconfig|grep -E "inet|ether"
        inet 172.18.201.209  netmask 255.255.240.0  broadcast 172.18.207.255
        ether 00:16:3e:0c:b2:b3  txqueuelen 1000  (Ethernet)
        inet 127.0.0.1  netmask 255.0.0.0
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:68:20:30  txqueuelen 1000  (Ethernet)

三.多条件的与过滤,使用管道 |来实现,就实现了两个条件为and的查询

[root@zss home]# ifconfig|grep -e "inet"|grep -e "broad"
        inet 172.18.201.209  netmask 255.255.240.0  broadcast 172.18.207.255
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255

四.忽略大小写的查询 -i

[root@zss home]# ifconfig|grep -i "ethernet"
        ether 00:16:3e:0c:b2:b3  txqueuelen 1000  (Ethernet)
        ether 52:54:00:68:20:30  txqueuelen 1000  (Ethernet)

五.显示匹配的字符是哪一行? -n

[root@zss home]# ifconfig|grep -n "eth"
1:eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
3:        ether 00:16:3e:0c:b2:b3  txqueuelen 1000  (Ethernet)
19:        ether 52:54:00:68:20:30  txqueuelen 1000  (Ethernet)

六.匹配每行的所有字符都一致  -w

文本为:

test1
test2
test3
test4
test
test
test6

[root@zss home]# grep -w test test.txt 
test
test

必须每行的所有字符都一致才显示

七.显示没有匹配上的字符  -v

配合上多个条件那么就是-vE ” 规则 | 规则 | … ”

[root@zss home]# cat test.txt|grep -vE "1|4|6"
test2
test3
test
test

相关参数解释:

-a 不要忽略二进制数据。
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数>  除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。