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

1

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.

    
por Sas 15.10.2014 / 18:24

1 resposta

5

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

  • :X define o rótulo X
  • t X vai para o rótulo X se s/// tiver sucesso
por 15.10.2014 / 18:43