使用bash中的egrep在文件中查找确切的单词

时间:2013-12-25 23:15:48

标签: linux bash

我有一个名为F1的文件。 F1包含

Hello abc@
aaa ddd

现在,我想检查文件abc中的F1字样。

运行以下命令后

find $dir -type f -exec egrep -w "abc" {} \;

这是我得到的输出

Hello abc@

由于某种原因,还发现了abc@这个词。 (我在寻找abc。)

3 个答案:

答案 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