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.