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 : 表示匹配到的内容用颜色标记出来, 颜色默认红色
来源: http://www.bubuko.com/infodetail-2600395.html