您的位置:首页 > 运维架构 > Linux

Linux egrep在文件内查找指定的字符串命令详解

2014-06-24 10:33 931 查看
功能说明:在文件内查找指定的字符串。egrep执行效果如grep -E,使用的语法及参数可参照grep指令,与grep不同点在于解读字符串的方法,egrep是用extended regular expression语法来解读,而grep则用basic regular expression语法,extended regular expression比basic regular expression有更完整的表达规范。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

grep、fgrep 和 egrep 命令 比较

grep的一般格式为:

    grep [选项] 基本正则表达式 [文件]

  在grep命令中输入字符串参数时,最好将其用双引号括起来。例如:“my strings”,这样做有两个原因,一个是防止被误会是shell命令,一个是可以用来查找多个单词组成的字符串,就如这个例子中的“my strings”。

  在调用变量的时候,也应该使用双引号,例如:grep “$MYNAME”。

  在调用模式匹配时,应该使用单引号。

  grep命令中的常用选项:

    -c 只输出匹配的行数。

    -i 不区分大小写。

    -h 查询多个文件时不显示文件名。

    -l 查询文件时只显示匹配字符所在的文件名。

    -n 显示匹配的行及其行号。

    -s 不显示不存在或不匹配文本的错误信息。

    -v 显示不匹配的所有行。

    -E 允许使用扩展模式匹配。例如:grep -E '00|04' findfile,表示在findfile文件中查询包含00或04的行。

  grep允许使用国际字符模式匹配。类名及其等价的正则表达式:

    类 正则表达式

    [[:upper:]] [A-Z]

    [[:lower:]] [a-z]

    [[:digit:]] [0-9]

    [[:alnum:]] [0-9a-zA-Z]

    [[:space:]] 空格或tab键

    [[:alpha:]] [a-zA-Z]

grep、fgrep和egrep命令

  这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。grep命令一次只能搜索一个指定的模式;egrep命令检索扩展的正则表达式(包括表达式组和可选项);fgrep命令检索固定字符串,它不识别正则表达式,是快速搜索命令。

  这组命令在搜索与定位文件中特定的主题方面非常有用。要搜索的模式可以被认为是一些关键词,您可以用它们来搜索文件中包含的这些关键词。编写程序时,可以用它来寻找某一个函数,或是相关的词组。grep命令的搜索功能比fgrep强大,因为grep命令的搜索模式可以是正则表达式,而fgrep却不能。有关正则表达式请参见shell一章。

  该组命令中的每一个命令都有一组选项,利用这些选项可以改变其输出方式。例如,可以在搜索到的文本行上加入行号,或者只输出文本行的行号,或者输出所有与搜索模式不匹配的文本行,或只简单地输出已搜索到指定模式的文件名,并且可以指定在查找模式时忽略大小写。

  这组命令在指定的输入文件中查找与模式匹配的行。如果没有指定文件,则从标准输入中读取。正常情况下,每个匹配的行被显示到标准输出。如果要查找的文件是多个,则在每一行输出之前加上文件名。

  语法:

  grep [选项] [查找模式] [文件名1,文件名2,……]

  egrep [选项] [查找模式] [文件名1,文件名2,……]

  fgrep [选项] [查找模式] [文件名1,文件名2,……]

  这组命令各选项的含义为:

  - E 每个模式作为一个扩展的正则表达式对待。

  - F 每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式。

  - b在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量。

  - c 只显示匹配行的数量。

  - i 比较时不区分大小写。

  - h 在查找多个文件时,指示grep不要将文件名加入到输出之前。

  - l 显示首次匹配串所在的文件名并用换行符将其隔开。当在某文件中多次出现匹配串时,不重复显示此文件名。

  - n 在输出前加上匹配串所在行的行号(文件首行行号为1)。

  - v 只显示不包含匹配串的行。

  - x 只显示整行严格匹配的行。

  - e expression 指定检索使用的模式。用于防止以“-”开头的模式被解释为命令选项。

  - f expfile 从expfile文件中获取要搜索的模式,一个模式占一行。

  对该组命令的使用还需注意以下方面:

  

在命令后键入搜索的模式,再键入要搜索的文件。其中,文件名列表中也可以使用特殊字符,如“*”等,用来生成文件名列表。如果想在搜索的模式中包含有空格的字符串,可以用单引号把要搜索的模式括起来,用来表明搜索的模式是由包含空格的字符串组成。否则,Shell将把空格认为是命令行参数的定界符,而 grep命令将把搜索模式中的单词解释为文件名列表中的一部分。在下面的例子中,grep命令在文件example中搜索模式“text file”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: