1

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

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

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

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

4

4 回答 4

6

试试这个:

grep -E "^test1" file

这表明以单词 test1 开头的任何内容作为第一行。现在,如果您需要在中间完成此操作,则此方法不起作用,但您对此并不十分具体。至少在给出的示例中 ^ 会起作用。

于 2012-10-03T23:57:43.967 回答
3

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

grep "^test1\s" file

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

于 2012-10-03T23:58:23.117 回答
0

我知道我来了,但我发现了这个问题并想回答。一个被定义为一个字符序列并由空格分隔。所以我认为这会起作用 grep -E ' +test1|^test1' file


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

于 2017-05-09T18:03:27.377 回答
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
于 2017-08-23T12:32:50.970 回答