Far*_*had 3 command-line regex grep
我想abc在字符串中查找单词(我只想要确切的单词 abc,而不是包含 abc 的单词),但出现以下错误:
echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep <abc>
Run Code Online (Sandbox Code Playgroud)
bash:意外标记“换行符”附近的语法错误
您想要-o(仅显示匹配的字符串)和-w(仅将模式作为整个单词匹配)
$ echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep -ow abc
abc
Run Code Online (Sandbox Code Playgroud)
感谢 steeldriver 解释了如何实际使用<and>而不是-w指示单词边界。它们应该是\<,\>但是必须引用反斜杠才能将其传递给 grep 以及<符号,因为它们对 shell 也具有特殊含义。如此强烈地引用这样的表达式:
echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep -o '\<abc\>'
Run Code Online (Sandbox Code Playgroud)
或者对反斜杠发疯:
echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep -o \\\<abc\\\>
Run Code Online (Sandbox Code Playgroud)