例如:我有如下文件:
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)
手册页)。