【发布时间】:2013-12-25 23:15:47
【问题描述】:
我有一个名为F1 的文件。 F1 包含
现在,我想检查 abc 是否在文件 F1 中。
运行以下命令后
find $dir -type f -exec egrep -w "abc" {} \;
这是我得到的输出
你好 abc@由于某种原因,还发现了 abc@ 这个词。 (我在找abc。)
【问题讨论】:
我有一个名为F1 的文件。 F1 包含
现在,我想检查 abc 是否在文件 F1 中。
运行以下命令后
find $dir -type f -exec egrep -w "abc" {} \;
这是我得到的输出
你好 abc@由于某种原因,还发现了 abc@ 这个词。 (我在找abc。)
【问题讨论】:
应该这样做:
egrep '(^| )abc( |$)' F1
它寻找abc 被空格或行开头/结尾包围。
【讨论】:
您可能正在使用 GNU egrep - -w 选项不是 POSIX 标准的一部分
- 及其手册页状态
所以@ 被认为是一个非单词组成字符,就像, 和. 和
空格。
如果您对单词分隔符有什么想法,请告诉我们 我们可以为您制作一个正则表达式。
【讨论】:
@ 不被视为单词的一部分,因此它会将abc@ 视为您要查找的单词“abc” - 后面紧跟着@,但这不会改变任何事情。那么究竟什么才是适合你的呢?
abc.、abc!、abc#、abc%、abc*、abc,、abc- 和 abc?,其中您希望egrep -w 找到其中的哪些,您希望它忽略哪些?
find $dir -type f -exec grep -v [[:punct:]] {} \; | grep -ow abc
【讨论】: