linux 使用grep精确匹配单词

00jrzges  于 2023-08-03  发布在  Linux
关注(0)|答案(5)|浏览(127)

我有一个要求,搜索一个确切的词,并打印一行。如果行中没有任何.(点),则可以工作。

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

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

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

jei2mxaa

jei2mxaa1#

试试这个:

grep -E "^test1" file

字符串
这表明任何以单词test1作为第一行开始的内容。如果你需要在中间找到这个,这是不起作用的,但是你没有很具体地说明这一点。至少在给定的示例中^将起作用。

jm81lzqq

jm81lzqq2#

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

grep "^test1\s" file

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

qojgxg4l

qojgxg4l3#

我知道我有点晚了,但我发现了这个问题,并想回答。一个 word 被定义为一个字符序列,由空格分隔。所以我认为这将工作grep -E ' +test1| ^test1'文件
这搜索以Test1开始的行或在Test之前至少有一个空格的行。对不起,我可以找到一个更好的方法,如果有人可以纠正我:)

368yc8dk

368yc8dk4#

你可以把下面的作为样本测试文件。

$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

66bbxpm5

66bbxpm55#

grep -wi 'test1' file

字符串
这会有用的

相关问题