Com base na sed sintaxe clássica s/replace-this/with-that/g onde g significa global replace = todas as ocorrências, alguém pode usar 2g em vez de g , o que significa global replacement but after second occurence (essa é uma extensão gnu sed ).
Exemplo que remove apenas e :
$ echo $a
there are seven pencil
$ echo $a | sed 's/e//2g'
ther ar svn pncil
Para remover todas as letras duplicadas, podemos fazer um truque como este:
$ sed -f <(printf 's/%s//2g\n' {a..z}) <<<"$a"
ther a svn pcil
Infelizmente, isso não funcionará: sed 's/[a-z]//2g'
O truque acima usa a substituição de processo <( ) , que pode ser usada como arquivo.
No meu processo de solução, a substituição é tratada como um arquivo de script sed , alimentado pelos comandos sed by -f option = read sed de um arquivo.