使用grep匹配确切的单词

时间:2012-10-03 23:46:12

标签: linux shell

我需要搜索确切的单词并打印一行。如果我在行中没有任何.(点),它就可以工作。

$cat file
test1 ALL=ALL
w.test1 ALL=ALL

$grep -w test1 file
test1 ALL=ALL
w.test1 ALL=ALL

它也给出第二行,我只想要具有确切单词test1的行。

4 个答案:

答案 0 :(得分:5)

试试这个:

grep -E "^test1" file

这表示任何以单词test1作为第一行开头的内容。现在这不起作用,如果你需要在行中间完成这个,但你不是非常具体的。至少在给定的例子中^将起作用。

答案 1 :(得分:3)

对于您的示例,您可以使用^指定行的开头,并在正则表达式中指定带\s的空格

grep "^test1\s" file

这取决于您可能需要匹配的其他分隔符。

答案 2 :(得分:0)

我知道我迟到了但是我发现了这个问题并想到了回答。 单词被定义为字符序列并由空格分隔。 所以我认为这会奏效 grep -E'+ test1 | ^ test1'文件

这将搜索以test1开头的行或者测试前面至少有一个空格的行。抱歉,如果有人能够纠正我,我可以找到更好的方法:)

答案 3 :(得分:0)

您可以在下面作为样本测试文件。

$cat /tmp/file
test1 ALL=ALL    
abc test1 ALL=ALL    
  test1 ALL=ALL    
w.test1 ALL=ALL    
testing w.test1 ALL=ALL

在正则表达式下面运行以搜索以test1开头的单词和在行之间有单词test1的行。

$ grep -E '(^|\s+)test1\b' /tmp/file   
test1 ALL=ALL    
abc test1 ALL=ALL   
  test1 ALL=ALL