Linux命令三剑客之grep
介绍
grep在三剑客中排行老三,是一个简单文本过滤命令,除了grep本身外还有两种扩展grep。
grep:文本过滤(基础版)
egrep:扩展文本过滤
fgrep:快速文本过滤
语法
语法:grep [option...] pattern-spec filename
参数
范本样式=条件
-c 计算符合条件的行数。
[root@bogon ~]# grep -c "^$" /etc/init.d/sshd
20
[root@bogon ~]#
-E使用扩展正则表达式。
[root@bogon ~]# grep "ro?t" /etc/passwd “?”需要使用扩展正则才生效
[root@bogon ~]# grep -E "ro?t" /etc/passwd
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
[root@bogon ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@bogon ~]# grep "ro+t" /etc/passwd
[root@bogon ~]# grep -E "ro+t" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@bogon ~]#
-i 模式匹配时忽略大小写差异。
[root@bogon tmp]# cat test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
ROOT adfg gadg adg
root 1242 13542
[root@bogon tmp]# grep "^root" test.txt
root:x:0:0:root:/root:/bin/bash
root 1242 13542
[root@bogon tmp]# grep -i "^root" test.txt
root:x:0:0:root:/root:/bin/bash
ROOT adfg gadg adg
root 1242 13542
[root@bogon tmp]#
-v 反转查找。显示不匹配模式的行
[root@bogon tmp]# grep -v "^root" test.txt
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
ROOT adfg gadg adg
[root@bogon tmp]#
-w 只显示全字符合的行。
[root@bogon tmp]# grep -w "root" test.txt
root:x:0:0:root:/root:/bin/bash
root 1242 13542
[root@bogon tmp]#
-o 只输出文件中匹配到的部分,不按行显示
[root@bogon tmp]# grep -w "root" test.txt
root:x:0:0:root:/root:/bin/bash
root 1242 13542
[root@bogon tmp]#
-n :打印行号【对匹配的行打印行号】
[root@bogon tmp]# grep -n "daemon" test.txt
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@bogon tmp]#
-q 不显示任何信息。静默的,如果匹配成功,不将匹配的行输出到标准输出;否则即是不成功
-s 不显示错误信息。常与-q连用
-a 不要忽略二进制数据。
-A 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-C或- 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e 指定字符串作为查找文件内容的范本样式。
-f 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-P 将模式解释为Perl正则表达式
grep学习扩展
1、grep --color=auto :表示匹配到的内容用颜色标记出来,颜色默认红色