Linux bash中有趣的grep匹配
你能解释一下原因吗 这一个给了$?=一,Linux bash中有趣的grep匹配,linux,bash,Linux,Bash,你能解释一下原因吗 这一个给了$?=一, echo "uus" | grep -w -o [0123456789]\* 这一个给美元0 echo "-uus" | grep -w -o [0123456789]\* 正则表达式可以匹配空字符串。-w标志意味着任何匹配都必须以行首或非单词字符开头,后跟行尾或非单词字符 在uus的情况下,行的开头后面是一个单词字符,因此grep不能将空字符串作为单词匹配。行尾前面有一个单词字符,因此grep不能将空字符串作为单词匹配 在-uus的情况下,行首后跟
echo "uus" | grep -w -o [0123456789]\*
这一个给美元0
echo "-uus" | grep -w -o [0123456789]\*
正则表达式可以匹配空字符串。-w标志意味着任何匹配都必须以行首或非单词字符开头,后跟行尾或非单词字符 在uus的情况下,行的开头后面是一个单词字符,因此grep不能将空字符串作为单词匹配。行尾前面有一个单词字符,因此grep不能将空字符串作为单词匹配
在-uus的情况下,行首后跟-这是一个非单词字符,因此grep可以将空字符串作为行首和-字符之间的单词进行匹配。正则表达式可以匹配空字符串。-w标志意味着任何匹配都必须以行首或非单词字符开头,后跟行尾或非单词字符 在uus的情况下,行的开头后面是一个单词字符,因此grep不能将空字符串作为单词匹配。行尾前面有一个单词字符,因此grep不能将空字符串作为单词匹配
在-uus的情况下,行首后跟-这是一个非单词字符,因此grep可以将空字符串作为一个单词匹配到行首和-字符之间。grep在“-”和“u”之间匹配零长单词。grep在“-”和“u”之间匹配零长单词。否,它匹配行首和-,之间的零长度单词。单词匹配后面必须跟一个非单词字符,u是单词字符。不,它匹配的是行首和-,之间的零长度单词。字匹配后必须跟一个非字字符,u是字字符。为什么grep-wo[0]*输出两行输出,而grep-o[0]*成功并输出零行输出?我从两个grep命令中获得零行输出,输入为uus或-uus。grep GNU grep 2.5.1为什么引用正则表达式会像SiegeX指出的那样产生不同?我不明白缺乏引用会有什么不同?你能解释一下吗?正如我在对SiegeX现在删除的答案的评论中所解释的,在正则表达式周围加上引号会使bash将反斜杠传递给grep。如果没有引号,bash会解释并删除反斜杠,而grep从未看到它。我猜你试图在评论中的第二颗星之前添加反斜杠。但是stackoverflow,像bash和grep一样,将反斜杠视为一个特殊字符。你知道反斜杠对grep来说很特别吧?在正则表达式周围加引号会使bash将反斜杠视为不特殊的,对吗?为什么grep-wo[0]*输出两行输出,而grep-o[0]*成功并输出零行输出?我从两个grep命令中获得零行输出,输入为uus或-uus。grep GNU grep 2.5.1为什么引用正则表达式会像SiegeX指出的那样产生不同?我不明白缺乏引用会有什么不同?你能解释一下吗?正如我在对SiegeX现在删除的答案的评论中所解释的,在正则表达式周围加上引号会使bash将反斜杠传递给grep。如果没有引号,bash会解释并删除反斜杠,而grep从未看到它。我猜你试图在评论中的第二颗星之前添加反斜杠。但是stackoverflow,像bash和grep一样,将反斜杠视为一个特殊字符。你知道反斜杠对grep来说很特别吧?在正则表达式周围加引号会使bash将反斜杠视为不特殊的,对吗?