grep(globalsearchregularexpression(RE)andprintouttheline,全面查找正则表达式并把行打印出来)是一种强壮的文本查找东西,它能运用正则表达式查找文本,并把匹配的行打印出来。
Unix的grep宗族包含grep、egrep和fgrep。egrep和fgrep的指令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符,fgrep就是fixedgrep或fastgrep,它们把一切的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面含义,不再特殊。linux运用GNU版本的grep。它功用更强,可以经过-G、-E、-F指令行选项来运用egrep和fgrep的功用。

grep的工作方式是这样的,它在一个或多个文件中查找字符串模板。假如模板包含空格,则有必要被引用,模板后的一切字符串被看作文件名。查找的结果被送到规范输出,不影响原文件内容。grep可用于shell脚本,因为grep经过回来一个状况值来说明查找的状况,假如模板查找成功,则回来0,假如查找不成功,则回来1,假如查找的文件不存在,则回来2。我们利用这些回来值就可进行一些自动化的文本处理工作。
linuxgrep命令用法详解
1.作用
Linux体系中grep指令是一种强大的文本查找东西,它能运用正则表达式查找文本,并把匹配的行打印出来。grep全称是GlobalRegularExpressionPrint,表明全局正则表达式版本,它的运用权限是一切用户。
2.格局
grep[options]
3.主要参数
[options]主要参数:
-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此参数的作用和指定“-drecurse”参数相同。
-s或–no-messages不显现错误信息。
-v或–revert-match反转查找。
-V或–version显现版本信息。
-w或–word-regexp只显现全字契合的列。
-x或–line-regexp只显现全列契合的列。
-y此参数的作用和指定“-i”参数相同。

–help在线帮助。
pattern正则表达式主要参数:
:疏忽正则表达式中特别字符的原有含义。
^:匹配正则表达式的开端行。
$:匹配正则表达式的完毕行。
<:从匹配正则表达式的行开端。
>:到匹配正则表达式的行完毕。
[]:单个字符,如[A]即A契合要求。
[-]:规模,如[A-Z],即A、B、C一向到Z都契合要求。
。:一切的单个字符。
*:有字符,长度可以为0。
4.grep指令运用简略实例
$grep‘test’d*
显现一切以d开头的文件中包括test的行。
$grep‘test’aabbcc
显现在aa,bb,cc文件中匹配test的行。
$grep‘[a-z]{5}’aa
显现一切包括每个字符串至少有5个连续小写字符的字符串的行。
$grep‘w(es)t.*1′aa
假如west被匹配,则es就被存储到内存中,并标记为1,然后查找任意个字符(.*),这些字符后边紧跟着另外一个es(1),找到就显现该行。假如用egrep或grep-E,就不必””号进行转义,直接写成’w(es)t.*1′就可以了。
5.grep指令运用复杂实例
假设您正在’/usr/src/Linux/Doc’目录下查找带字符串’magic’的文件:
$grepmagic/usr/src/Linux/Doc/*
sysrq.txt:*HowdoIenablethemagicSysRQkey?
sysrq.txt:*HowdoIusethemagicSysRQkey?
其中文件’sysrp.txt’包括该字符串,评论的是SysRQ的功用。
默认状况下,’grep’只查找当前目录。假如此目录下有许多子目录,’grep’会以如下形式列出:
grep:sound:Isadirectory
这可能会使’grep’的输出难于阅览。这儿有两种解决的办法:
明确要求查找子目录:grep-r
或疏忽子目录:grep-dskip
假如有很多输出时,您可以经过管道将其转到’less’上阅览:
$grepmagic/usr/src/Linux/Documentation/*|less
这样,您就可以更方便地阅览。
有一点要注意,您必需提供一个文件过滤方式(查找全部文件的话用*)。假如您忘了,’grep’会一向等着,直到该程序被中止。假如您遇到了这样的状况,按,然后再试。
下面还有一些有意思的指令行参数:
grep-ipatternfiles:不区别大小写地查找。默认状况区别大小写,
grep-lpatternfiles:只列出匹配的文件名,
grep-Lpatternfiles:列出不匹配的文件名,
grep-wpatternfiles:只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep-Cnumberpatternfiles:匹配的上下文别离显现[number]行,
greppattern1|pattern2files:显现匹配pattern1或pattern2的行,
greppattern1files|greppattern2:显现既匹配pattern1又匹配pattern2的行。
grep-npatternfiles即可显现行号信息
grep-cpatternfiles即可查找总行数
这儿还有些用于查找的特别符号:
<和>别离标示单词的开端与结尾。
例如:
grepman*会匹配‘Batman’、’manic’、’man’等,
grep‘grep‘’只匹配’man’,而不是’Batman’或’manic’等其他的字符串。
‘^’:指匹配的字符串内行首,
‘$’:指匹配的字符串内行尾,

1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com