首页 理论教育 grep命令在嵌入式Linux中的应用与实例

grep命令在嵌入式Linux中的应用与实例

时间:2023-10-31 理论教育 版权反馈
【摘要】:grep命令默认只查找指定的当前目录。在Linux终端运行grepsou.cesource命令的结果如图4-45所示。grep-A2‘This’source命令。图4-45 grepsou.cesource命令结果图图4-46 grep-A2‘This’source命令结果图由图4-46可以看出,执行grep-A2‘This’source命令后,在当前目录下的source文件中查找包含字符串This的行,并在屏幕上显示查找到的行及其后面的2行。

grep命令在嵌入式Linux中的应用与实例

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所示。

978-7-111-33316-6-Chapter04-45.jpg

图4-45 grepsou.cesource命令结果图

978-7-111-33316-6-Chapter04-46.jpg

图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所示。

978-7-111-33316-6-Chapter04-47.jpg

图4-47 grep‘[^a-rt-z]ource’*命令结果图

978-7-111-33316-6-Chapter04-48.jpg

图4-48 grep-n‘s\{2\}’*命令结果图

在图4-48中可以看出,执行grep-n‘s\{2\}’*命令后,把当前目录下的所有文件中包含ss连续出现2次字符串的行以列表形式显示,并在该行之前显示行号。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈