Linux Shell 写regex pattern 识别字符串的单词


字符串:aa bb cc dd

要求:输出字符串里的单词

pattern 1:

*@*:~$ echo aa bb cc dd |grep   \\b\\w*\\b

result:aa bb cc dd

pattern 2:用+号代替*

*@*:~$ echo aa bb cc dd |grep   \\b\\w+\\b

result:没有输出

问题在哪呢,对了+得转义,加个\

pattern 3:

*@*:~$ echo aa bb cc dd |grep   \\b\\w\+\\b

result:还是没有输出

这是怎么回事,搞来搞去,才知道怎么回事,看下面就知道了

pattern 4:

*@*:~$ echo aa bb cc dd |grep   \\b\\w\\+\\b

result:aa bb cc dd

最后给一个计算单词个数的shell命令

 echo aa bb cc dd |sed -e s/\\b\\w\\+\\b/x/g | sed -e s/\\s//g | wc -m(好像不对,输出的是5,而实际上不是只有4个吗)

望各位解惑。

相关内容