grep -w uses punctuations and whitespaces as delimiters.
如何将grep设置为仅使用空格作为单词的分隔符?
答案 0 :(得分:3)
如果您想匹配 空格:grep -w foo
与grep " foo "
相同。如果您还想匹配行尾或制表符,则可以开始执行以下操作:grep '\(^\| \)foo\($\| \)'
,但您最好使用perl -ne 'print if /\sfoo\s/'
答案 1 :(得分:2)
您无法更改grep -w
的工作方式。但是,您可以使用X
或tr
替换带有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'