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