Linux命令之 grep命令
warning:
这篇文章距离上次修改已过1694天,其中的内容可能已经有所变动。
grep(Global Regular Expression Print)命令是一种强大的文本搜索/匹配工具,它亦可使用正则表达式来作为搜索/匹配条件,并把匹配的行打印出来。
Error:注意:如果匹配条件中带有空格,请一定要用引号包裹起来,否则,空格后的内容会被当成文件名使用。
命令语法
grep [选项]... 模式 [文件]...
返回值 | 说明 |
---|---|
0 | 搜索/匹配成功 |
1 | 搜索/匹配失败 |
2 | 文件不存在 |
附加参数
参数 | 说明 |
---|---|
-a, --text | 不要忽略二进制的数据 |
-A<显示行数>, --after-context=<显示行数> | 除了显示符合范本样式的那一列之外,并显示该行之后的内容 |
-b, --byte-offset | 在显示符合样式的那一行之前,标示出该行第一个字符的编号 |
-B<显示行数>, --before-context=<显示行数> | 除了显示符合样式的那一行之外,并显示该行之前的内容。 |
-c, --count | 计算符合样式的列数 |
-C<显示行数>, --context=<显示行数>或-<显示行数> | 除了显示符合样式的那一行之外,并显示该行之前后的内容 |
-d <动作>, --directories=<动作> | 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作 |
-e<范本样式>, --regexp=<范本样式> | 指定字符串做为查找文件内容的样式 |
-E, --extended-regexp | 将样式为延伸的普通表示法来使用 |
-f<规则文件>, --file=<规则文件> | 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式 |
-F, --fixed-regexp | 将样式视为固定字符串的列表 |
-G, --basic-regexp | 将样式视为普通的表示法来使用 |
-h, --no-filename | 在显示符合样式的那一行之前,不标示该行所属的文件名称 |
-H, --with-filename | 在显示符合样式的那一行之前,表示该行所属的文件名称 |
-i, --ignore-case | 忽略字符大小写的差别 |
-l, --file-with-matches | 列出文件内容符合指定的样式的文件名称 |
-L, --files-without-match | 列出文件内容不符合指定的样式的文件名称 |
-n, --line-number | 在显示符合样式的那一行之前,标示出该行的列数编号 |
-q, --quiet或--silent | 不显示任何信息 |
-r, --recursive | 此参数的效果和指定-d recurse 参数相同 |
-s, --no-messages | 不显示错误信息 |
-v, --revert-match | 显示不包含匹配文本的所有行 |
-V, --version | 显示版本信息并退出 |
-w, --word-regexp | 只显示全字符合的列 |
-x, --line-regexp | 只显示全列符合的列 |
-y | 此参数的效果和指定-i 参数相同 |
常用范例
查找指定进程
ps -ef|grep git
查找指定进程个数
ps -ef|grep git -c
ps -ef|grep -c git
从文件中读取关键词进匹配
cat key | grep -f test
从文件中读取关键词进行匹配,且显示行号
cat key | grep -nf test
从文件中匹配关键词
grep 'ding' test
从多个文件中匹配关键词
grep 'ding' test test2
grep不显示本身进程
ps aux|grep \[s]sh
ps aux | grep ssh | grep -v "grep"
输出1开头的行
cat test |grep ^1
输出非1开头的行
cat test |grep ^[^1]
输出以g结尾的行内容
cat test |grep g$
输出包含1或者2的内容行
cat test |grep -E "1|2"
正则匹配查询
grep '[a-z]\{3\}' test