web-dev-qa-db-ja.com

awkは単語全体に一致します

awkを使用して、テキストファイルの単語全体を照合したいと思います。英数字以外の文字で囲まれた単語を含みます。

例えば ​​-

検索する文字列-ABC

ソースファイル -

HHHABCCCCH
HHH ABC
HH(ABC)ASDAASD
HH,ABC-ASASDASD

結果-

HHH ABC
HH(ABC)ASDAASD
HH,ABC-ASASDASD
4
bryan

「ABC」をハードコーディングする代わりに変数として渡す場合は、マッチング演算子を使用します。

awk -v Word=ABC '$0 ~ "[^[:alpha:]]" Word "[^[:alpha:]]"'

Gawk(他のawkもありますか?)では、\<\>を使用して、単語の境界を示すことができます。ここで、Wordは文字、数字、アンダースコアのシーケンスです(私は信じています)。例:

awk '/\<ABC\>/'
3
glenn jackman

使用する \y単語の境界の場合、例:.

awk '/\yABC\y/'

詳細については、 https://www.gnu.org/software/gawk/manual/html_node/GNU-Regexp-Operators.html を参照してください。

2
Pero

それを理解しました-タイプミスのために問題がありました

awk '/[^[:alpha:]]ABC[^[:alpha:]]/'
2
bryan