Grep正则表达式解读一个词

hsd*_*lon 4 regex grep

我想用grep命令解读一个单词.

我正在使用下面的代码.我知道还有其他方法可以做到,但我想我在这里遗漏了一些东西:

 grep "^[yxusonlia]\{9\}$" /usr/share/dict/words
Run Code Online (Sandbox Code Playgroud)

应该产生一个输出:

anxiously
Run Code Online (Sandbox Code Playgroud)

但它产生:

annulosan                      
innoxious
Run Code Online (Sandbox Code Playgroud)

还有很多.基本上我找不到如何指定字符只能匹配一次,所以我只得到一个输出.

我道歉,如果看起来很简单,但我尝试了很多,找不到任何东西.

anu*_*ava 5

你可以使用grep -P(PCRE正则表达式)负向前瞻

grep -P '^(?:([yxusonlia])(?!.*?\1)){9}$' /usr/share/dict/words
anxiously 
Run Code Online (Sandbox Code Playgroud)

说明:

对于由组#1匹配的每个字符,此grep正则表达式使用负前瞻.每个字符仅匹配,并且只有在字符串中没有再次跟随相同字符直到结束时才匹配.(?!.*?\1)\1