我需要搜索确切的单词并打印一行。如果我在行中没有任何.
(点),它就可以工作。
$cat file
test1 ALL=ALL
w.test1 ALL=ALL
$grep -w test1 file
test1 ALL=ALL
w.test1 ALL=ALL
它也给出第二行,我只想要具有确切单词test1
的行。
答案 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