Linux命令-查找长度为3或8个字母的单词

时间:2019-02-24 21:15:07

标签: regex grep

我有一个包含很多单词的文本文件。我需要找到长度为3个字母或长度为8个字母的单词。我可以使用以下命令分别找到3和8个字母的单词。如何将结果合并为一个输出?

grep -E '^.{3}$' words | wc -w

grep -E '^.{8}$' words | wc -w

2 个答案:

答案 0 :(得分:4)

另一种方法是:

grep -E '^(.{3}|.{8})$'

并结合其他方式:

grep -E '^.{3}$|^.{8}$'
grep -E -e '^.{3}$' -e '^.{8}$'

检查以下内容:Alternation with The Vertical Bar or Pipe Symbol

一个例子:

$ cat file
orange
banana
who
what
we
eat
buzzkill
find

$ grep -E '^(.{3}|.{8})$' file
who
eat
buzzkill

$ grep -E '^.{3}$|^.{8}$' file
who
eat
buzzkill

$ grep -E -e '^.{3}$' -e '^.{8}$' file
who
eat
buzzkill

答案 1 :(得分:3)

如果要计数 3个字母和8个字母的单词,请使用:

grep -Ewc '.{3}|.{8}' file

如果要查看 3个字母和8个字母的单词,请使用:

grep -Ew '.{3}|.{8}' file

因此,如果您的文件包含:

a
be
sea
deee
goldfish
somethinglong

您将获得:

grep -Ewc '.{3}|.{8}' file
2

或:

grep -Ew '.{3}|.{8}' file
sea
goldfish