首页 > 解决方案 > 避免在 grep 结果中使用破折号

问题描述

我正在尝试选择其中包含名称“paul”的行。

!grep -w '^paul' some_file

这也返回以paul-henri开头的行。如何选择仅以单词“paul”开头的单行?

(换句话说,破折号 - 或斜线 / 和点 . 如果后面跟着单词 paul 则被选中)


更新:

感谢蒂姆,这行得通:

grep -w '^paul' some_file | grep -vE 'paul[-./?]'

标签: grep

解决方案


您可以匹配模式^paul[^-]

!grep -w '^paul[^-]' some_file

这将匹配任何以 开头的行paul,然后是一个或多个除破折号以外的字符。如果您还需要匹配可能以仅 开头包含的行paul,则可能需要使用负前瞻:

^paul(?!-)

但是,这需要扩展版本grep,并且您的 grep 版本可能不支持它。


推荐阅读