一、基本用法
grep是linux中很常用的一个命令,主要功能就是进行字符串数据的对比,能使用正则表达式搜索文本,并将符合用户需求的字符串打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。grep在数据中查找出一个字符串时,是以整行为单位来进行数据选取的。
1、命令格式
2、主要参数
3、patten
要搜索的关键字或正则表达式语句,正则表达式参见后文。
4、简单实例
二、正则用法
grep patten正则表达式主要元字符及使用如下表:
元字符
功能
例子
匹配什么
^
锚定行的开始
/^love/
匹配所有以love开头的行
$
锚定行的结束
/love$/
匹配所有以love 结束的行
.
匹配一个字符
/l..e/
匹配这样的行,这些行包含这样的字符:第一个字符是l,紧跟着两个字符,然后是e
*
代表0个或多个先前字符
/*love/
匹配所有这样的行,有0个或多个空格,空格后跟着love
[]
匹配字符组中的一个字符
/[Ll]ove/
匹配所有包含love或者Love的行
[^]
匹配一个不在范围内的字符
/[^A-Z]ove/
<
锚定单词的开始
<love
匹配所有这样的行,这些行包含以love开头的单词(vi和grep支持这个功能)
>
锚定单词的结束
Love>
匹配所有这样的行,这些行包含以love结束的单词(vi和grep支持这个功能)
(..)
标记后面用到的匹配字符
/(love)able1rs/
最多可以使用9个标签。第一个标签是模板最左边的部分。在本例子中,模板love保存的标签为1,后面的1指得就是love;本例子搜索的是这样的行,这些行包含这样的字符,在Loveabel后面跟着lovers
x{m}
M次复制字符x
x{m,}
至少m次复制字符x
x{m,n}
至少m次,至多n次复制字x
w
文字和数字字符,[A-Za-z0-9]
Lw*e
匹配一个L字符,紧跟着0个或多个文字或数字字符,然后是e
W
同上
b
单词分界线
bloveb
仅仅匹配单词love
简单实例如下:
三、其它家族
grep家族除了有grep命令外,还包括egrep、fgrep和pgrep。
1、egrep
egrep是grep的扩展,支持更多的正则元字符,具体如下:
+
匹配一个或者多个先前字符
[a-z]+ove
匹配一个或者多个小写字符且后面是ove的,
?
匹配0个或者多个先前字符
Lo?ve
匹配L后面有一个或者没有o,然后是ve
a|b|c
匹配a或b或c
Love|hate
匹配love或hate其中一个
()
字符组
Love(able|rs)(ov)+
匹配loveable或lovers,匹配一个或多个ov
(…)(…)12
标记匹配字符串
(love)ing
标签标记出寄存器的一部分,并稍后替换模板。该模板叫做1,并可反复引用。在表达式中最多可以使用9个这样的标签。例如,模板love被保存在寄存器1中并稍后替换标签叫做1
x{m}
重复字符X,m次,至少m,或者m次和n次之间。
x{m,}
x{m,n}
2、fgrep
fgrep是fixed grep或fast grep,它把所有的字母都看作单词,即正则元字符不再特殊,而仅仅表示其自身的字母意思。
3、pgrep
pgrep是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。
pgrep默认显示程序对应的进程ID列表:
pgrep常用参数如下:
-l:列出进程ID列表和程序名称
-o:列出进程起始ID
-n:列出进程终止ID
以上通过实例介绍了grep命令的用法,grep命令在linux中用的很多,经常与linux find命令结合实用,用于linux下文件或目录的查找。