grep -w只有空格作为分隔符

时间:2012-06-07 12:02:00

标签: unix grep word

grep -w uses punctuations and whitespaces as delimiters. 

如何将grep设置为仅使用空格作为单词的分隔符?

4 个答案:

答案 0 :(得分:3)

如果您想匹配 空格:grep -w foogrep " foo "相同。如果您还想匹配行尾或制表符,则可以开始执行以下操作:grep '\(^\| \)foo\($\| \)',但您最好使用perl -ne 'print if /\sfoo\s/'

答案 1 :(得分:2)

您无法更改grep -w的工作方式。但是,您可以使用Xtr替换带有sed字符的标点符号,然后使用grep -w,这样做就可以了。

答案 2 :(得分:2)

--word-regexp标志很有用,但有限。 grep手册页说:

   -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.

如果您想使用自定义字段分隔符,awk可能更适合您。或者您可以使用egrep或grep --extended-regexp编写扩展正则表达式,以便更好地控制搜索模式。

答案 3 :(得分:0)

使用tr用新行替换空格。然后grep您的字符串。我需要的连续字符串已被grep -w分割,因为其中包含冒号。此外,我只知道第一部分,第二部分是我需要提取的未知数据。因此,以下内容对我有所帮助。

echo "$your_content" | tr ' ' '\n' | grep 'string'