快捷手册grep
基本格式
grep 命令的基本格式如下:grep [选项] 模式 文件名
这里的模式,要么是字符(串),要么是正则表达式。
常用参数组合:
1 | grep -rnw --include='*.txt' 'search content' /path_to_search/ |
grep 命令常用选项及含义
| 选项 | 含义 |
| —– | —————————————————————————– |
| -c | 仅列出文件中包含模式的行数。 |
| -i | 忽略模式中的字母大小写。 |
| -l | 列出带有匹配行的文件名。 |
| -n | 在每一行的最前面列出行号。 |
| -v | 列出没有匹配模式的行。 |
| -w | 把表达式当做一个完整的单字符来搜寻,忽略那些部分匹配的行。 |
注意,如果是搜索多个文件,grep 命令的搜索结果只显示文件中发现匹配模式的文件名;而如果搜索单个文件,grep 命令的结果将显示每一个包含匹配模式的行。
第一部分
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
< 和 > 分别标注单词的开始与结尾。
例如:
grep man * 会匹配 ‘Batman’、’manic’、’man’等,
grep ‘<man’ * 匹配’manic’和’man’,但不是’Batman’,
grep ‘<man>’ 只匹配’man’,而不是’Batman’或’manic’等其他的字符串。
‘^’:指匹配的字符串在行首,
‘$’:指匹配的字符串在行 尾,
第二部分
-r
要递归搜索模式,请使用-r选项(或–recursive)调用grep。 使用此选项时,grep将搜索指定目录中的所有文件,并跳过递归遇到的符号链接。
第三部分
grep -n pattern files 即可显示行号信息
grep -C number pattern files :匹配的上下文分别显示[number]行,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
第四部分
grep -v 命令排除输出
第五部分
grep -c pattern files 即可查找总行数
案例
1 | $ grep ‘test’ d* |
显示所有以d开头的文件中包含 test的行。
【例 1】假设有一份 emp.data 员工清单,现在要搜索此文件,找出职位为 CLERK 的所有员工,则执行命令如下:
[root@localhost ~]# grep CLERK emp.data
而在此基础上,如果只想知道职位为 CLERK 的员工的人数,可以使用“-c”选项,执行命令如下:
[root@localhost ~]# grep -c CLERK emp.data
【例 2】搜索 emp.data 文件,使用正则表达式找出以 78 开头的数据行,执行命令如下:
[root@localhost ~]# grep ^78 emp.data
从根目录开始查找所有扩展名为 .log 的文本文件,并找出包含 “ERROR” 的行:
1 | $ find / -type f -name "*.log" | xargs grep "ERROR" |
例子:从当前目录开始查找所有扩展名为 .in 的文本文件,并找出包含 “thermcontact” 的行:
1 | find . -name "*.in" | xargs grep "thermcontact" |
一般情况下使用下面的命令(-n 显示行号,-w 表示匹配全词):
$ grep -rnw ‘path’ -e ‘pattern’
在递归的过程中只输出匹配内容所在的文件名称
如果我们只想查看匹配到的内容所在文件的名称,可以同时使用 r 和 -l, –files-with-matches 选项:
$ grep -rl email /home/nick/projects/bash/.git
在输出中显示行号
使用选 -n 可以在输出中显示行号:
统计匹配到的行的数量
使用选项 -c 可以统计匹配到的行的数量:
参考
Linux grep命令详解:查找文件内容:c.biancheng.net/view/4017.html
Linux grep 命令:https://www.runoob.com/linux/linux-comm-grep.html
Linux中grep命令详解:https://blog.csdn.net/qq_40797605/article/details/89075918
Linux grep 命令:https://www.cnblogs.com/sparkdev/p/11294517.html
快捷手册系列
快捷手册01正则表达式
快捷手册02git
快捷手册03vim
快捷手册04docker
快捷手册05linux三剑客之grep
快捷手册06linux三剑客之awk
快捷手册07linux三剑客之sed
快捷手册08nginx
快捷手册09mysql
快捷手册10redis
快捷手册11mongodb
快捷手册12sqlite