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

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

例如:我有如下文件:

AA ABC-AA-AA
AAA ABC-AA
ABC.AA ABC
AA ABC.A AA

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

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

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

答案1

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

-w, --word-正则表达式

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

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

grep -E '(^| )ABC( |$)' file1

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

相关内容