Saída estranha do AWK

0

Tentando extrair uma coluna (Número UPC) do arquivo csv e adicionando espaços em branco no final, caso o comprimento do arquivo seja menor que 14. No entanto, a saída tem um ^ M no final que não sei como para remover.

Este comando está trabalhando para outras colunas, exceto por esta.

awk -F, '{print $8}' $FILE | awk '{printf("%-14s\n", $0) }' > $TEMP/upc

saída vi:

861601000109^M

736040531685^M

saída de gato:

 61601000109

 36040531685
    
por Rsokolov 20.12.2016 / 22:41

1 resposta

1

Este arquivo provavelmente foi aberto e salvo em um editor de texto do Windows.

O caractere de fim de linha em sistemas baseados em UNIX é diferente daquele do Windows.

Text files created on DOS/Windows machines have different line endings than files created on Unix/Linux. DOS uses carriage return and line feed ("\r\n") as a line ending, which Unix uses just line feed ("\n"). You need to be careful about transferring files between Windows machines and Unix machines to make sure the line endings are translated properly.

Fonte

Quando você cat do arquivo, o caractere EOL não será exibido, no entanto, quando você ler o arquivo usando vi , ele será.

A maneira mais fácil de remover ^M do arquivo é provavelmente usar o editor de fluxo sed para remover os caracteres ^M . Digite este comando: % sed -e "s/^M//" filename > newfilename

Para inserir ^M , digite CTRL-V e, em seguida, CTRL-M . Ou seja, mantenha pressionada a tecla CTRL e pressione V e M sucessivamente.

    
por 20.12.2016 / 22:57