我想从多个文本文件中找到连续包含六个或更多辅音的单词列表。
我对Unix终端还很陌生,但这是我尝试过的方法:
cat *.txt | grep -Eo "\w+" | grep -i "[^AEOUIaeoui]{6}"
我在这里使用cat命令,因为否则它将在下一个管道中包含文件名。我使用第二个管道来获取文本文件中所有单词的列表。
问题是最后一个管道,我想以某种方式使其连续到达grep 6个辅音,而不必是相同的管道。我会知道一种解决问题的方法,但是这样会使创建命令的时间比整个帖子更长。
你可以使用
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\}
,
为什么我们需要
[[:alpha:]]*
之前和之后?@Philippe匹配任何零个或多个字母。
@Philippe观看在线
grep
演示以了解为什么[[:alpha:]]*
在这里很重要。