我有一个grep
处理字符串的命令
test-test test
我希望该命令仅向我显示突出显示的“独立”一词test
,而不是test-test
.
然而,当我跑步时
echo "test-test test" | grep -w "test"
我test
突出显示了所有发生的情况。
是否可以将匹配限制为仅孤立出现test
?
我有一个grep
处理字符串的命令
test-test test
我希望该命令仅向我显示突出显示的“独立”一词test
,而不是test-test
.
然而,当我跑步时
echo "test-test test" | grep -w "test"
我test
突出显示了所有发生的情况。
是否可以将匹配限制为仅孤立出现test
?
所有
test
出现的内容都以粗体显示,因为-w
单词是由非单词字符分隔的单词字符序列,单词字符是字母数字和下划线。-
不是单词字符。在 中
testing-test+test2;test_3;untested
,只有第二个test
匹配项匹配,因为这是唯一一个前面或后面都没有单词字符的匹配项。如果要匹配以空格分隔的单词,则必须手动指定这些环视断言,并且需要与 perl 兼容的正则表达式来实现并非所有
grep
实现都支持的正则表达式。由于您似乎有一个grep='grep --color
别名,如果您grep
支持--color
,那么它也有可能支持-P
/-X perl
选项,然后您可以执行以下操作:(?<!...)
(?!...)
分别是perl regexps 中的负向后查找和向前查找断言运算符。\S
,就像 POSIX 的[^[:space:]]
匹配和不属于空白的字符。这就是说:“test
只要它前面或后面都没有非空白字符,就匹配”。使用 Perl 正则表达式(在带有
-P
标志的 GNU grep 中受支持),您可以使用负向后查找和向前查找来断言 的匹配test
不与 相邻-
:这输出