如何使用仅空格作为单词分隔符的精确单词

GP9*_*P92 4 grep regular-expression

例如:我有如下文件:

AA ABC-AA-AA
AAA ABC-AA
ABC.AA ABC
AA ABC.A AA
Run Code Online (Sandbox Code Playgroud)

如果我使用grep -w "ABC" file1,我会得到所有的行。

但我应该只得到第三行: ABC.AA ABC

它以.-作为单词分隔符。但我只需要空格作为单词分隔符。

pet*_*rph 10

来自(GNU)grep(1)手册页:

-w, --word-regexp

仅选择包含构成整个单词的匹配项的那些行。测试是匹配的子字符串必须位于行首或前面是非单词组成字符。同样,它必须位于行尾或后跟非单词组成字符。单词组成字符是字母、数字和下划线

因此,您需要明确请求空格(或行开头和/或结尾)在那里:

grep -E '(^| )ABC( |$)' file1
Run Code Online (Sandbox Code Playgroud)

如果您还想包含其他空白字符,请用更大的集合替换上面的空格,例如[[:space:]](再次参见grep(1)手册页)。