web-dev-qa-db-ja.com

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オプションですが、私の文字列は行全体をマッハする必要があります。

76
user3334375

次のいずれかを試してください。

grep -w "deiauk" textfile

grep "\<deiauk\>" textfile
141
Janis

GNU grepでこれを試して、\bで単語の境界をマークします。

grep "\bdeiauk\b" file

出力:

 deiauk 1611516 afsdf 765 

参照: http://www.regular-expressions.info/wordboundaries.html

14
Cyrus

grep-P(PCRE)をサポートしている場合、次のことができます。

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

実際のデータに応じて、Wordの後にスペースを続けて検索できます。

grep 'deiauk ' file.txt 

行の先頭にある必要があることがわかっている場合は、それを確認します。

grep '^deiauk ' file.txt 
5
Volker Siegel