Linux命令三剑客之grep常用参数详解

Linux命令三剑客之grep
介绍
grep在三剑客中排行老三,是一个简单文本过滤命令,除了grep本身外还有两种扩展grep。
grep:文本过滤(基础版)
egrep:扩展文本过滤
fgrep:快速文本过滤
语法
语法:grep [option...] pattern-spec filename

参数
范本样式=条件
-c 计算符合条件的行数。

[[email protected] ~]# grep -c "^$" /etc/init.d/sshd 
20
[[email protected] ~]#

-E使用扩展正则表达式。

[[email protected] ~]# grep "ro?t" /etc/passwd  “?”需要使用扩展正则才生效
[[email protected] ~]# grep -E "ro?t" /etc/passwd
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
[[email protected] ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[[email protected] ~]# grep "ro+t" /etc/passwd    
[[email protected] ~]# grep -E "ro+t" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[[email protected] ~]# 

-i 模式匹配时忽略大小写差异

[[email protected] 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
[[email protected] tmp]# grep "^root" test.txt 
root:x:0:0:root:/root:/bin/bash
root 1242 13542
[[email protected] tmp]# grep -i "^root" test.txt 
root:x:0:0:root:/root:/bin/bash
ROOT adfg gadg adg
root 1242 13542
[[email protected] tmp]# 

-v 反转查找。显示不匹配模式的行

[[email protected] 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
[[email protected] tmp]# 

-w 只显示全字符合的行。

[[email protected] tmp]# grep -w "root" test.txt     
root:x:0:0:root:/root:/bin/bash
root 1242 13542
[[email protected] tmp]#

-o 只输出文件中匹配到的部分,不按行显示

[[email protected] tmp]# grep -w "root" test.txt     
root:x:0:0:root:/root:/bin/bash
root 1242 13542
[[email protected] tmp]#

-n :打印行号【对匹配的行打印行号】

[[email protected] tmp]# grep -n "daemon" test.txt   
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
[[email protected] 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 :表示匹配到的内容用颜色标记出来,颜色默认红色

猜你喜欢

转载自blog.51cto.com/13691477/2116050