grep是英文单词GlobalSearchRegularExpression andPrintOuttheLine(全面搜索正则表达式并把行打印出来)的简写,是一种强大的文本搜索命令,能使用正则表达式搜索文本,并把匹配的行显示出来。
名称:grep
使用权限:所有使用者
使用格式:grep[参数][表达式][文件或目录]
功能说明:grep命令用于在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看做文件名,并且搜索的结果被送到屏幕,不影响原文件的内容。
参数介绍如下。
●-a:不要忽略二进制的数据。
●-A<显示列数>:除了显示符合表达式的那一行外,并显示该行之后的内容。
●-b:在显示符合表达式的那一行之前,显示出该行第一个字符的位编号。
●-d<进行动作>:当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。例如,<进行动作>为skip,表示忽略子目录;<进行动作>为recurse,表示查找子目录。
●-r:此参数的效果和指定“-drecurse”参数相同,即查找指定目录下的子目录。grep命令默认只查找指定的当前目录。
●-v:反转查找,只显示不匹配的行。
●-B<显示列数>:除了显示符合表达式的那一行之外,并显示该行之前的内容。
●-c:计算文件中符合表达式的行数。
●-C<显示行数>:除了显示符合表达式的那一行之外,并显示该行之后的内容。
●-h:在显示符合表达式的那一行之前,不显示该列所属的文件名称。
●-H:在显示符合表达式的那一行之前,表示该列所属的文件名称,默认显示文件名称。
●-i:忽略字符大小写的差别。
●-y:此参数的效果和指定“-i”参数相同。
●-w:只匹配整个单词,而不是字符串的一部分(如匹配‘soft’,而不是‘software’)。
●-l:只列出文件内容符合指定表达式的文件名称。
●-L:与“-l”相反,只列出文件内容不符合指定表达式的文件名称。
●-n:在显示符合表达式的那一行之前,显示出该行的行号。
●-q:不显示任何信息。
●-s:不显示错误信息。
●-x:只显示全行符合表达式的行。
●-e<表达式>:指定字符串作为查找文件内容的表达式,可以省略“-e”参数。
●-help:显示帮助信息。
●-version或-V:显示版本信息。
注意:在grep命令中可以使用通配符,并且多个参数之间可以同时使用,搜索全部文件用*。
在grep命令中,表达式是正则表达式,使用到的元字符集(基本集)如下。
1)“^”表示匹配行的开始,例如,'^soft'表示匹配所有以soft开头的行。
2)“$”表示匹配行的结束,例如,'soft$'表示匹配所有以soft结尾的行。
3)“.”表示匹配一个非换行符的字符,例如,'so.t'匹配so后接一个任意字符,然后是t。(www.xing528.com)
4)“*”表示匹配零个或多个字符,例如,'*soft'匹配所有一个或多个空格后紧跟soft的行。“.*”代表任意字符。
5)“[]”表示匹配一个指定范围内的字符,如'[Ss]oft'匹配Soft和soft。
6)“[^]”表示匹配一个不在指定范围内的字符,如'[^a-rt-z]oft'匹配不包含a-r和t-z的一个字母开头,紧跟oft的行。注意:使用“[^]”时不区分大小写。
7)“x\{n\}”表示重复字符x,n次,如'w\{4\}'匹配包含4个w的行。
8)“x\{n,\}”表示重复字符x,至少n次,如'w\{4,\}'匹配至少有4个w的行。
9)“x\{k,n\}”表示重复字符x,至少k次,不多于n次,如'w\{4,9\}'匹配4-9个w的行。
10)“\w”表示匹配文字和数字字符,也就是[A-Za-z0-9],如's\w*oft'匹配s后跟零个或多个文字或数字字符,然后是oft。
11)“\W”表示“\w”的反置形式,匹配一个或多个非单词字符,如点号、句号等。
12)“\<”表示匹配单词的开始,如grep'\<man'*命令,匹配‘manic’和‘man’,而不是‘Batman’。
13)“\>”表示匹配单词的结束,如grep'man\>'命令,匹配‘Batman’和‘man’,而不是‘manic’。
14)“\b”表示单词锁定符,如'\bsoft\b'只匹配soft。
【例4-41】grepsou.cesource命令。
在Linux终端运行grepsou.cesource命令的结果如图4-45所示。
由图4-45可以看出,在当前目录下的source文件中查找含有“sou.ce”字符串的行,并在屏幕上显示。
注意:grepsou.cesource命令等同于grep‘sou.ce’source命令。
【例4-42】grep-A2‘This’source命令。
在Linux终端运行grep-A2‘This’source命令的结果如图4-46所示。
图4-45 grepsou.cesource命令结果图
图4-46 grep-A2‘This’source命令结果图
由图4-46可以看出,执行grep-A2‘This’source命令后,在当前目录下的source文件中查找包含字符串This的行,并在屏幕上显示查找到的行及其后面的2行。
【例4-43】grep‘[^a-rt-z]ource’*命令。
在Linux终端运行grep‘[^a-rt-z]ource’*命令的结果如图4-47所示。
在图4-47中可以看出,执行grep‘[^a-rt-z]ource’*命令后,把当前目录下的所有文件中包含除了不包含a-r和t-z的一个字母开头,紧跟ource字符串的行以列表形式显示。
【例4-44】grep-n‘s\{2\}’*命令。
在Linux终端运行grep-n‘s\{2\}’*命令的结果如图4-48所示。
图4-47 grep‘[^a-rt-z]ource’*命令结果图
图4-48 grep-n‘s\{2\}’*命令结果图
在图4-48中可以看出,执行grep-n‘s\{2\}’*命令后,把当前目录下的所有文件中包含ss连续出现2次字符串的行以列表形式显示,并在该行之前显示行号。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。