AWK não adiciona nova coluna [duplicada]

1

Meu arquivo tem 4 colunas numéricas. Abaixo, testar se as colunas são identificadas corretamente. tail -n +2 é remover o cabeçalho.

tail -n +2 file.txt | awk '{print $1,$2,$3,$4}' | head

41261311 41261568 2798880 2799128
-115939711 -115940021 2799541 2799827
-115939159 -115939706 2800137 2800685
-115939033 -115939106 2801113 2801186
-115938419 -115938978 2801191 2801726
-115937404 -115937535 2812511 2812642
-115937075 -115937323 2813756 2814011
-115910025 -115910146 2818095 2818198
-115909932 -115909986 2818205 2818262
-115909723 -115909789 2818703 2818768

Eu quero adicionar uma quinta coluna que seja col4 menos col3.

tail -n +2 file.txt | awk '{print $1,$2,$3,$4,$4-$3}' | head

 2481311 41261568 2798880 2799128
 286939711 -115940021 2799541 2799827
 548939159 -115939706 2800137 2800685
 735939033 -115939106 2801113 2801186
 535938419 -115938978 2801191 2801726
 131937404 -115937535 2812511 2812642
 255937075 -115937323 2813756 2814011
 103910025 -115910146 2818095 2818198
 575909932 -115909986 2818205 2818262
 655909723 -115909789 2818703 2818768

Ele não adiciona a quinta coluna e faz algo estranho na primeira coluna.

    
por rmf 02.08.2018 / 10:03

1 resposta

2

Seu arquivo está terminando em (Windows) CR LF em vez de (Unix) LF .
O caractere CR move a linha para o início e, em seguida, o valor da nova coluna calculada é impresso sobre a primeira coluna.

Use dos2unix ou filtre o arquivo com tr -d '\r' ou simplesmente use:

awk 'NR>2 { gsub(/\r/,""); print $1,$2,$3,$4,$4-$3 } NR>12{exit}' file

remova o último NR>12{exit} para processar o arquivo inteiro.

    
por 02.08.2018 / 10:22

Tags