Repita a substituição até que a saída não mude:
$ echo 'A|B|C|D|||E' | sed ':X;s/||/|""|/g;tX'
A|B|C|D|""|""|E
onde
-
:Xdefine o rótuloX -
t Xvai para o rótuloXses///tiver sucesso
Eu tenho um arquivo que usa | como um delimitador. Alguns dos registros têm célula vazia como || (nada dentro). Eu estou tentando substituí-los com |""| com o seguinte comando sed:
sed -i 's/\|\|/\|""|/g' file
Mas o resultado não foi o que eu esperava.
Arquivo de entrada
A|B|C|D|||E
Saída desejada:
A|B|C|D|""|""|E
Observe que o início e o final dos registros não têm "|"
Qualquer ajuda seria apreciada.
Tags bash sed shell-script