Usando a opção -P
(PCRE), se disponível em seu sistema:
grep -P '^(?=[a-zA-Z]{7}$)(.)(?!)(.)(?!)(?!)(.)(?!)(?!)(?!).$' inputfile
Explicação:
^
(?=[a-zA-Z]{7}$) : positive lookahead, zero-length assertion that make sure we have exactly 7 letters. You may use \pL{7} if you want to deal with any laguage
(.) : first letter, captured in group 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
(?!) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 1 after
(?!) : 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
: fourth letter == second letter
(?!) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 1 after
(?!) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 2 after
(?!) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 3 after
. : fifth letter
: sixth letter == second letter
: seventh letter == first letter
$