awk 匹配整个单词

bry*_*yan 6 awk shell-script

我想用来awk匹配文本文件中的整个单词。包括以非字母数字字符为界的单词。

例如 -

要搜索的字符串 - ABC

源文件 -

HHHABCCCCH
HHH ABC
HH(ABC)ASDAASD
HH,ABC-ASASDASD
Run Code Online (Sandbox Code Playgroud)

结果 -

HHH ABC
HH(ABC)ASDAASD
HH,ABC-ASASDASD
Run Code Online (Sandbox Code Playgroud)

小智 6

用于\y字边界,例如

awk '/\yABC\y/'

有关更多详细信息,请参阅https://www.gnu.org/software/gawk/manual/html_node/GNU-Regexp-Operators.html

  • 该链接适用于 gawk。我不确定 \y 是否适用于 awk。 (2认同)

gle*_*man 5

如果要将“ABC”作为变量传递而不是对其进行硬编码,请使用匹配运算符:

awk -v word=ABC '$0 ~ "(^|[^[:alpha:]])" word "([^[:alpha:]]|$)"'
Run Code Online (Sandbox Code Playgroud)

使用 gawk(其他 awks?),您可以使用\<\>来表示单词边界,其中一个单词是由字母、数字和下划线组成的序列(我相信),因此这适用于您的示例:

awk '/\<ABC\>/'
Run Code Online (Sandbox Code Playgroud)