Warm tip: This article is reproduced from serverfault.com, please click

regex-如何使用grep命令获取连续有六个或更多辅音的单词列表?

(regex - How can I get a list of the words that have six or more consonants in a row using the grep command?)

发布于 2020-11-20 12:52:22

我想从多个文本文件中找到连续包含六个或更多辅音的单词列表。

我对Unix终端还很陌生,但这是我尝试过的方法:

cat *.txt | grep -Eo "\w+" | grep -i "[^AEOUIaeoui]{6}"

我在这里使用cat命令,因为否则它将在下一个管道中包含文件名。我使用第二个管道来获取文本文件中所有单词的列表。

问题是最后一个管道,我想以某种方式使其连续到达grep 6个辅音,而不必是相同的管道。我会知道一种解决问题的方法,但是这样会使创建命令的时间比整个帖子更长。

Questioner
doelie247
Viewed
11
Wiktor Stribiżew 2020-11-20 20:57:29

你可以使用

grep -hEio '[[:alpha:]]*[b-df-hj-np-tv-z]{6}[[:alpha:]]*' *.txt

正则表达式详细信息

  • [[:alpha:]]* -任何零个或多个字母
  • [b-df-hj-np-tv-z]{6} -六个英文辅音字母结尾
  • [[:alpha:]]* -任何零个或多个字母。

这些grep选项使正则表达式搜索不区分大小写(i),并且grep仅显示匹配的文本(带有o),而不显示文件名(h)。-E选项允许使用POSIX ERE语法,否则,如果未指定,则需要转义{6}\{6\}