文本三剑客之grep
Grep是Linux用户用来搜索文本字符串的命令行工具。您可以使用它在文件中搜索某个单词或单词的组合,也可以将其他Linux命令的输出通过管道传输到grep,因此grep可以仅显示您需要查看的输出。
grep的命令格式如下:
grep 选项 查找条件 目标文件
选项:
-color=auto 对匹配到的文本着色显示
-m # 匹配#次后停止 grep -m 1 root /etc/passwd #多个匹配只取第一个
-v 显示不被pattern匹配到的行,即取反 grep -Ev '^[[:space:]]*#|^$' /etc/fstab
-i 忽略字符大小写
-n 显示匹配的行号
-c 统计匹配的行数 grep -c root /etc/passwd #统计匹配到的行数
-o 仅显示匹配到的字符串
-q 静默模式,不输出任何信息
-A # after, 后#行 grep -A3 root /etc/passwd #匹配到的行后3行业显示出来
-B # before, 前#行
-C # context, 前后各#行
-e 实现多个选项间的逻辑or关系,如:grep –e ‘cat ' -e ‘dog' file
grep -e root -e bash /etc/passwd #包含root或者包含bash 的行
grep -E root|bash /etc/passwd
-w 匹配整个单词 grep -w root /etc/passwd
useradd rooter
-E 使用ERE,相当于egrep
-F 不支持正则表达式,相当于fgrep
-f file 根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件
-r 递归目录,但不处理软链接
-R 递归目录,但处理软链接
示例
命令
作用
grep "hello" * -nsr
在当前目录下的所有文件、目录中查找“hello”
grep "hello" * -nsr -C 3
在当前目录下的所有文件、目录中查找“hello”,并打印上下3行
grep "hello\|hi" * -nsr
在当前目录下的所有文件、目录中查找“hello”或“hi”
grep '^root|bash$' * -nsr
查找以 root 为行首的或以 bash 为行尾的行
grep "hello" kernel -nsr
在当前目录的kernel子目录中查找“hello”
grep "hello" a.txt -n
在当前目录的a.txt文件中查找“hello”
grep "hello" --exclude-dir=dir1
在当前目录下查找除了dir1目录的hello
grep "hello" --exclude-dir={dir1,dir2}
在当前目录下查找除了dir1和dir2目录的hello
grep "hello" --include=*.{php,c} * -nswr
在当前目录及子目录的以.php和.c文件中搜索"hello"
grep -e ".hello" * -nsr 或 grep "\.hello" * -nsr
在当前目录下的所有文件、目录中查找“.hello”
grep -e "client->flags" * -nsr 或 grep "client\->flags" * -nsr
在当前目录下的所有文件、目录中查找“client->flags”