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(PCRE)をサポートしている場合は、-P次のことができます。

$ 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 $.

関連情報