我想abc
在字符串中查找单词(我只想要精确的单词 abc,而不是包含 abc 的单词)但是出现以下错误:
echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep <abc>
bash:意外标记‘换行符’附近有语法错误
答案1
您想要-o
(仅显示匹配的字符串)和-w
(仅将模式匹配为整个单词)
$ echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep -ow abc
abc
感谢steeldriver 解释了如何使用<
and>
代替 来-w
表示单词边界。它们应该是\<
and,\>
但反斜杠必须用引号引起来才能传递给 grep,就像符号一样<
,因为它们对 shell 也有特殊含义。因此,像这样强引用表达式:
echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep -o '\<abc\>'
或者疯狂使用反斜杠:
echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep -o \\\<abc\\\>