我想用来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。
如果要将“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)