包含4或6个字符的grep字符串仅在bash中计数

时间:2015-09-17 05:03:26

标签: awk sed grep

我想只打印包含4或6个字符的单词只计入bash中的一行。我尝试了几件没有用的东西。有人能让我知道我们怎么能做到这一点?

2 个答案:

答案 0 :(得分:4)

捕获四个或六个字符长的单词:

$ echo four fives sixsix | grep -Eow '\w{4}|\w{6}'
four
sixsix

-w告诉grep只匹配完整的单词

-o告诉grep只打印匹配而不打印它们的上下文。

-E告诉grep使用扩展正则表达式,这样我们就不必输入那么多反斜杠

\w{4}匹配长度为四个字符的单词,而\w{6}匹配六个字符长的单词。 |是合乎逻辑的。或

答案 1 :(得分:1)

如果yoiu没有GNU版本(尤其是grep选项-o

Sed版(符合posix)

sed -e 's/[[:blank:]]\{1,\}/ /g;s/.*/ & /' -e ':cycle' -e 's/ [^ ]\{1,3\} / /g;s/ [^ ]\{7,\} / /g;s/ [^ ]\{5\} / /g;t cycle' -e 's/^ *//;s/ *$//;/^ *$/d' YourFile

AWK

awk '{for(i=1;i++<=NR;)if(l=length($i)==4||l==6)print $i}' YourFile