在字符串中查找单词

在字符串中查找单词

我想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\\\>

相关内容