Como evitar o corte de dados ao formatar o arquivo no unix

0

Eu tenho um arquivo no formato abaixo

A           |b -c          |   c      |  d  -c | | |

E eu preciso formatar o arquivo acima, como abaixo

A|b -c|c|d  -c|||

Por favor note, eu não quero remover o espaço dos dados. Eu só quero remover o espaço extra antes do terminador de dados, ou seja, | (cano).

    
por user313150 16.11.2018 / 18:56

2 respostas

2

Uma opção seria usar sed para dizer "substituir um ou mais espaços seguidos por um canal com um canal" - e fazer isso para cada ocorrência desses espaços & canos:

sed  's/  *|/|/g' < input > output

Para remover também os espaços após o canal:

sed  's/  *|/|/g; s/|  */|/g' < input > output
    
por 16.11.2018 / 19:00
0

Você poderia usar Awk, definindo o separador de campo de entrada para um pipe cercado por qualquer quantidade de espaço em branco e o separador de campo de saída para apenas um pipe:

awk 'BEGIN {FS="[ \t]*\|[ \t]*"; OFS="|"} {$1=$1} 1' file
    
por 16.11.2018 / 21:23