grep
全称global search regular expression(RE) and print out the line
,全面搜索正则表达式并把行打印出来。这名字就怪吓人,如果熟练掌握正则表达式,配上这命令 Linux 里可以横着走了。
这个命令参数实在太多,加上正则表达式估计一张纸不够。那就直接上实例吧。
使用实例
在当前目录中,查找后缀带有cpp
字样的文中包含test
字符串的文件,并打印所在行
grep test *cpp
grep --colorauto test *cpp # 用颜色标记
通过"-v"参数可以打印出不符合条件行的内容。
grep -v test *cpp
系统报警显示了时间,但是日志文件太大无法直接 cat 查看。(查询含有特定文本的文件,并拿到这些文本所在的行)。-n
或 --line-number
可以显示符合样式的那一行之前,标示出该行的列数编号。
grep -n '2019-10-24 00:01:11' *.log
grep 静默输出,不会输出任何信息,如果命令运行成功返回 0,失败则返回非 0 值。一般用于条件测试。
grep -q "test" filename
在多级目录中对文本进行递归搜索
grep "text" . -r -n
配合管道,查找指定的进程信息
ps -ef | grep svn
查找指定的进程个数,-c
计数
ps -ef | grep svn -c
常用正则表达式通配符
通配符 | 功能 |
---|---|
c* | 将匹配 0 个(即空白)或多个字符 c(c 为任一字符) |
. | 将匹配任何一个字符,且只能是一个字符 |
[xyz] | 匹配方括号中的任意一个字符 |
[^xyz] | 匹配除方括号中字符外的所有字符 |
^ | 锁定行的开头 |
$ | 锁定行的结尾 |
在id.txt
中找到所有以 3207 开头的数据
grep ^3207 id.txt