Text-Processing

如何使用 grep 命令搜尋不包含連續輔音的單詞?

  • October 7, 2022

grep -Ev '[^aeiouy]{2}'應該給出答案(假設每行只有一個由 ASCII 小寫字母組成的單詞的輸入)。

但是,有沒有辦法做到這一點-v

對於肯定匹配,您需要確保如果有輔音,則它們後面沒有輔音,也沒有在輔音之前,每個輔音前面都是行首或元音,然後是行尾或一個元音。

所以:

v='[aeiouy]' c='[^aeiouy]'
grep -xE "($c?$v)*$c?"
$ grep -cxE "($c?$v)*$c?" /usr/share/dict/words
11353
$ grep -cvE "$c$c" /usr/share/dict/words
11353
$ diff -s <(grep -xE "($c?$v)*$c?" /usr/share/dict/words) <(grep -vE "$c{2}" /usr/share/dict/words)
Files /proc/self/fd/11 and /proc/self/fd/18 are identical

引用自:https://unix.stackexchange.com/questions/720118