grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
选项
- -a 不要忽略二进制数据。
- -A <显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
- -b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
- -c 计算符合范本样式的列数。
- -C <显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
- -d <进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
- -e <范本样式> 指定字符串作为查找文件内容的范本样式。
- -E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
- -f <范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
- -F 将范本样式视为固定字符串的列表。
- -G 将范本样式视为普通的表示法来使用。
- -h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
- -H 在显示符合范本样式的那一列之前,标示该列的文件名称。
- -i 胡列字符大小写的差别。
- -l 列出文件内容符合指定的范本样式的文件名称。
- -L 列出文件内容不符合指定的范本样式的文件名称。
- -n 在显示符合范本样式的那一列之前,标示出该列的编号。
- -q 不显示任何信息。
- -R/-r 此参数的效果和指定“-d recurse”参数相同。
- -s 不显示错误信息。
- -v 反转查找。
- -w 只显示全字符合的列。
- -x 只显示全列符合的列。
- -y 此参数效果跟“-i”相同。
- -o 只输出文件中匹配到的部分。
常用到的命令
$ cat test.txt
文件内容如下
Hello, world!
I have a dream, and you?
I love python and django, because ...
1、查找某单词是否在文件中
grep ‘search_word’ file_name
eg: grep 'python' test.txt
则会输出 I love python and django, because ...
2、递归查找某目录下包含某单词的文件
grep ‘search_word’ 目录 -r
eg: grep 'python' /tmp/django/ -r
递归查找 /tmp/django/
目录下出现 python
关键字的文件
3、反向查找,即查找不包含某关键字的行
grep ‘search_word’ file_name -v
eg: grep 'I' test.txt -v
则会输出不包含 I
的行 Hello, world!
4、统计出现某单词出现的行数
grep ‘search_word’ file_name -c
eg: grep 'I' test.txt -c
输出 2(有两行出现 I
字母)
5、通过正则表达式来查找匹配的字符
grep ‘正则表达式’ file_name -E
eg: grep 'p.*' test.txt -E
匹配含有 p
字母的行,输出 I love python and django, because ...
eg: grep 'p.*' test.txt -Ec
统计符合正则表达式的行数,输出 1
以上是个人工作中比较常用的 grep
命令的选项,grep
真的很强大,还可以配合其他命令一起使用,起到帅选过滤的作用,比如:
ps -aux | grep python # 帅选出包含python关键字的进程