你能解释一下为什么吗
这个给$?=1个

echo "uus" | grep -w -o [0123456789]\*

这个给$?=0个
echo "-uus" | grep -w -o [0123456789]\*

最佳答案

正则表达式可以匹配空字符串。-w标志表示任何匹配都必须以行首或非字字符开头,然后是行尾或非字字符。
uus的情况下,行的开头是一个单词字符,因此grep不能将空字符串作为单词进行匹配。行尾前面有一个单词字符,因此grep不能将空字符串作为单词进行匹配。
-uus的情况下,行首后跟-,这是一个非单词字符,因此grep可以将空字符串作为行首和-字符之间的单词进行匹配。

关于linux - bash中有趣的grep匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9144090/

10-16 17:39