Como substituir o símbolo || com |""| usando sed

Como substituir o símbolo || com |""| usando sed

Tenho um arquivo que uso |como delimitador. Alguns dos registros possuem células vazias como ||(nada dentro). Estou tentando substituí-los |""|pelo 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 possuem "|"

Qualquer ajuda seria apreciada.

Responder1

Basta repetir 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 Xvá para o rótulo Xse s///tiver sucesso

informação relacionada