Grep与正则表达式

时间:2012-08-14 13:19:34

标签: regex linux bash grep

考虑这个文本文件:

TEST FILE : test                         #No match
                                         #No match
Run grep "1133*" on this file            #Match
                                         #No match
This line contains the number 113.       #Match
This line contains the number 13.        #No match
This line contains the number 133.       #No match
This line contains the number 1133.      #Match
This line contains the number 113312.    #Match
This line contains the number 1112.      #No match
This line contains the number 113312312. #Match
This line contains no numbers at all.    #No match

grep命令如何评估1133*正则表达式?

为什么包含113的行是肯定的?

正则表达式1133*是否意味着除了 找到包含单词1133+anything else的所有行?

此示例位于tldp文档页面。

2 个答案:

答案 0 :(得分:8)

您正在考虑使用shell通配符,*匹配任何内容。在regular expressions中,*quantifier,意思是“零或更多”之前的任何内容,在这种情况下为3

因此,您的表达方式意味着113后跟零个或多个3 s。

答案 1 :(得分:1)

尝试 grep“1133 $” 要么 grep“^ 1133 $”

其中^是行的开头,$是行的结尾

如果您的行假设有3列: aaa 113 bbbb

cat file.txt | awk'{print $ 2}'| grep“^ 1133 $”| wc -l <​​/ p>

确保您只查看特定列