使用 grep 精确匹配字符串

使用 grep 精确匹配字符串

我有一个文本文件:

deiauk 1611516 afsdf 765
minkra 18415151 asdsf 4152
linkra sfsfdsfs sdfss 4555
deiauk1 sdfsfdsfs 1561 51
deiauk2 115151 5454 4
deiauk 1611516 afsdf ddfgfgd
luktol1 4545 4 9
luktol 1

我想完全匹配deiauk。当我这样做时:

grep "deiauk" file.txt

我得到这个结果:

deiauk 1611516 afsdf 765
deiauk1 sdfsfdsfs 1561 51
deiauk2 115151 5454 4

但我只需要这个:

deiauk 1611516 afsdf 765
deiauk 1611516 afsdf ddfgfgd

我知道有一个-w选项,但是我的字符串必须处理整行。

答案1

尝试以下之一:

grep -w "deiauk" textfile

grep "\<deiauk\>" textfile

答案2

使用 GNU 尝试此操作grep并使用 标记单词边界\b

grep "\bdeiauk\b" file

输出:

德奥克 1611516 afsdf 765

看:http://www.regular-expressions.info/wordboundaries.html

答案3

如果您grep支持-P(PCRE),您可以这样做:

$ grep -P '(^|\s)\Kdeiauk(?=\s|$)' file.txt 
deiauk 1611516 afsdf 765
deiauk 1611516 afsdf ddfgfgd

答案4

我发现-x对我有用。

例子
$ grep -inx -d skip 'favicon.ico' *
test.txt:1:favicon.ico
查询手册
-x, --line-regexp
              Select  only  those  matches  that  exactly  match the whole line.  For a regular expression pattern, this is like
              parenthesizing the pattern and then surrounding it with ^ and $.

相关内容