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

Awk 包含4或6个字符的grep字符串仅在bash中计数,awk,sed,grep,Awk,Sed,Grep,我只想打印包含4或6个字符的单词,在bash中只计算一行。我尝试了几件不起作用的事情。有人能告诉我怎么做吗?要捕获四个或六个字符长的单词: $ echo four fives sixsix | grep -Eow '\w{4}|\w{6}' four sixsix -w告诉grep只匹配完整的单词 -o告诉grep只打印匹配项,而不打印它们的上下文 -E告诉grep使用扩展正则表达式,这样我们就不必键入太多反斜杠 \w{4}匹配四个字符长的单词,而\w{6}匹配六个字符长的单词|是逻辑或。如果

我只想打印包含4或6个字符的单词,在bash中只计算一行。我尝试了几件不起作用的事情。有人能告诉我怎么做吗?

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

$ echo four fives sixsix | grep -Eow '\w{4}|\w{6}'
four
sixsix
-w
告诉grep只匹配完整的单词

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

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


\w{4}
匹配四个字符长的单词,而
\w{6}
匹配六个字符长的单词<代码>|是逻辑或。

如果您没有GNU版本(特别是grep上的选项
-o

Sed版本(兼容posix)

awk


awk'{for(i=1;i++请发布您到目前为止尝试过的内容。@MichałSzkudlarek我尝试了
grep-o-w'\w\{4,6\}
它可以过滤4,5,6个字符,但我不想要5个字符的单词。。
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 '{for(i=1;i++<=NR;)if(l=length($i)==4||l==6)print $i}' YourFile