你能解释一下为什么吗
这个给$?=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/