如何 grep 出具有特定字母出现次数的单词?

如何 grep 出具有特定字母出现次数的单词?

我正在尝试编写一个脚本,用于在字典中搜索包含每个字母恰好出现两次的单词。我只是不知道 grep 语法是否恰好包含某个字母的两次出现。

答案1

如果你想找到两个实例任何地方总之,您将需要允许匹配字符之前、之间和之后存在任意不匹配的字符串。

例如找到整个单词由 中恰好 2 个字母 实例组成q(不区分大小写)/usr/share/dict/words

$ grep -wi '[^q]*q[^q]*q[^q]*' /usr/share/dict/words
Albuquerque
Albuquerque's
Qiqihar
Qiqihar's

如果您不受grep具体限制,您可能需要考虑使用perl可以利用以下事实的地方:当在标量上下文中评估时,该tr命令返回音译的数量,例如

perl -ne 'print if tr/qQ/qQ/ == 2' /usr/share/dict/words

类似地,使用 GNU awk,您可以将感兴趣的字符定义为字段模式并测试字段的数量:

gawk -vFPAT='[qQ]' 'NF==2' /usr/share/dict/words

相关内容