我需要搜索一个确切的单词并打印一行。如果我没有任何.
(点)在行,它正在工作。
$cat file
test1 ALL=ALL
w.test1 ALL=ALL
$grep -w test1 file
test1 ALL=ALL
w.test1 ALL=ALL
它也给出了第二行,我只想要带有确切单词的行test1
。
试试这个:
grep -E "^test1" file
这表明以单词 test1 开头的任何内容作为第一行。现在,如果您需要在中间完成此操作,则此方法不起作用,但您对此并不十分具体。至少在给出的示例中 ^ 会起作用。
对于您的示例,您可以在正则表达式中用 a^
和空格指定行的开头\s
grep "^test1\s" file
这取决于您可能还需要匹配哪些其他分隔符。
我知道我来晚了,但我发现了这个问题并想回答。一个词被定义为一个字符序列并由空格分隔。所以我认为这会起作用 grep -E ' +test1|^test1' file
这将搜索以 test1 开头的行或 test 前面至少有一个空格的行。抱歉,如果有人可以纠正我,我可以找到更好的方法:)
您可以将以下作为示例测试文件。
$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