我有一个要求,搜索一个确切的词,并打印一行。如果行中没有任何.(点),则可以工作。
.
$cat file test1 ALL=ALL w.test1 ALL=ALL $grep -w test1 file test1 ALL=ALL w.test1 ALL=ALL
字符串它也给出了第二行,我只想要有确切单词test1的行。
test1
jei2mxaa1#
试试这个:
grep -E "^test1" file
字符串这表明任何以单词test1作为第一行开始的内容。如果你需要在中间找到这个,这是不起作用的,但是你没有很具体地说明这一点。至少在给定的示例中^将起作用。
jm81lzqq2#
对于您的示例,您可以在正则表达式中用^指定行首,用\s指定空格
^
\s
grep "^test1\s" file
字符串这取决于您可能还需要匹配哪些其他分隔符。
qojgxg4l3#
我知道我有点晚了,但我发现了这个问题,并想回答。一个 word 被定义为一个字符序列,由空格分隔。所以我认为这将工作grep -E ' +test1| ^test1'文件这搜索以Test1开始的行或在Test之前至少有一个空格的行。对不起,我可以找到一个更好的方法,如果有人可以纠正我:)
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
型
66bbxpm55#
grep -wi 'test1' file
字符串这会有用的
5条答案
按热度按时间jei2mxaa1#
试试这个:
字符串
这表明任何以单词test1作为第一行开始的内容。如果你需要在中间找到这个,这是不起作用的,但是你没有很具体地说明这一点。至少在给定的示例中^将起作用。
jm81lzqq2#
对于您的示例,您可以在正则表达式中用
^
指定行首,用\s
指定空格字符串
这取决于您可能还需要匹配哪些其他分隔符。
qojgxg4l3#
我知道我有点晚了,但我发现了这个问题,并想回答。一个 word 被定义为一个字符序列,由空格分隔。所以我认为这将工作grep -E ' +test1| ^test1'文件
这搜索以Test1开始的行或在Test之前至少有一个空格的行。对不起,我可以找到一个更好的方法,如果有人可以纠正我:)
368yc8dk4#
你可以把下面的作为样本测试文件。
字符串
运行下面的正则表达式来搜索一个以test1开头的单词和一个在两行之间有一个单词test1的行。
型
66bbxpm55#
字符串
这会有用的