我有一个名为F1
的文件。 F1
包含
Hello abc@ aaa ddd
现在,我想检查文件abc
中的F1
字样。
运行以下命令后
find $dir -type f -exec egrep -w "abc" {} \;
这是我得到的输出
Hello abc@
由于某种原因,还发现了abc@
这个词。 (我在寻找abc
。)
答案 0 :(得分:4)
这应该这样做:
egrep '(^| )abc( |$)' F1
它查找由空格或行开头/结尾包围的abc
。
答案 1 :(得分:2)
您可能正在使用GNU egrep - -w
选项不是POSIX标准的一部分
- 及其手册页说明
-w, --word-regexp Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or preceded by a non-word constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-constituent characters are letters, digits, and the underscore.
因此,@
被视为非单词构成字符,就像,
和.
一样
空格。
如果您对分隔符这个词有所了解,请告诉我们 我们可以为你制作一个正则表达式。
答案 2 :(得分:0)
find $dir -type f -exec grep -v [[:punct:]] {} \; | grep -ow abc