Verwenden Sie die -P
Option (PCRE), falls auf Ihrem System verfügbar:
grep -P '^(?=[a-zA-Z]$)(.)(?!\1)(.)(?!\1)(?!\2)(.)\2(?!\1)(?!\2)(?!\3).\2\1$' inputfile
Erläuterung:
^ (?=[a-zA-Z]$) : positive lookahead, zero-length assertion that make sure we have exactly 7 letters. You may use \pL if you want to deal with any laguage (.) : first letter, captured in group 1 (?!\1) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 1 after (.) : second letter, captured in group 2 (?!\1) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 1 after (?!\2) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 2 after (.) : third letter, captured in group 3 \2 : fourth letter == second letter (?!\1) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 1 after (?!\2) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 2 after (?!\3) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 3 after . : fifth letter \2 : sixth letter == second letter \1 : seventh letter == first letter $