grep, egrep, fgrep - print lines matching a pattern
grep 命令用于查找文件里符合条件的字符串。
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。
若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
语法:
grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
参数:
- -v 表示排除后面接的内容
- grep -v oldboy test.txt 表示排除test.txt文件中的oldboy字符串
- --color=auto 给输出的内容或目录或文件,自动添加对应颜色
- grep --color=auto 3306 /etc/services
- -n 对匹配的内容打印行号
- grep -n . nginx.conf # 对nginx.conf里的配置匹配上的字符打印行号,如果要将空行打印上行号, grep -n ".*" nginx.conf
- -E 同时匹配多个字符串
- 命令效果和 egrep 效果等价
- grep -E '3306|1521' /etc/services
- egrep '3306|1521' /etc/services
- -i 或--ignore-case 不区分大小写
- -o 或--only-matching 不显示整行,只显示匹配的内容
- -w 或 --word-regexp 只显示全字符和的列;按单词搜索,相当于(单词边界)。
- -B 除了显示匹配的一行之外,并显示该行之前的num行
- grep 5 -B 1 test.txt # 筛选第5行和第五行的前1行
- -A 除了显示匹配的一行之外,并显示该行之后的num行
- grep 5 -A 2 test.txt # 筛选第5行和第五行的后两行
- -C 除了显示匹配的一行之外,并显示该行之前后各num行
- grep 5 -C 2 test.txt # 筛选第5行和前后两行,共5行