Linux命令之 grep命令

warning: 这篇文章距离上次修改已过1422天,其中的内容可能已经有所变动。

grep(Global Regular Expression Print)命令是一种强大的文本搜索/匹配工具,它亦可使用正则表达式来作为搜索/匹配条件,并把匹配的行打印出来。

Error:注意:如果匹配条件中带有空格,请一定要用引号包裹起来,否则,空格后的内容会被当成文件名使用。

命令语法

grep [选项]... 模式 [文件]...
返回值说明
0搜索/匹配成功
1搜索/匹配失败
2文件不存在
info:grep命令既可以使用字符串作为查询规则/模式,也可以使用 正则表达式POSIX字符 作为查询规则/模式。

附加参数

参数说明
-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

Git进程Git进程


查找指定进程个数

ps -ef|grep git -c
ps -ef|grep -c git

当前Git只有一个进程当前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"

查询ssh进程,并不显示自身进程查询ssh进程,并不显示自身进程


输出1开头的行

cat test |grep ^1

以1开头的行以1开头的行


输出非1开头的行

cat test |grep ^[^1]

输出非1开头的行输出非1开头的行


输出以g结尾的行内容

cat test |grep g$

输出以g结尾的行内容输出以g结尾的行内容


输出包含1或者2的内容行

cat test |grep -E "1|2"

输出包含1或者2的内容行输出包含1或者2的内容行


正则匹配查询

grep '[a-z]\{3\}' test

匹配test文件中包含3个连续小写字母的行匹配test文件中包含3个连续小写字母的行

评论已关闭