Extrai colunas específicas do arquivo de texto

3

Existe um ficheiro de texto, com mais de 10000 linhas, no formato:

field1 field2 field3 field4 field5 ... fieldX

Ele precisa ser convertido para se parecer com:

field1,field2,field4,field3,field5 to fieldX

O último campo deve conter tudo, desde o campo 5 até o final da linha. E a saída final deve ser exportada para um arquivo csv.

Portanto, para:

123 abc XYZ qwe Abcd Efgh Iklmno Pqr Stu

A saída deve se parecer com:

123,abc,qwe,XYZ,Abcd Efgh Iklmno Pqr Stu

Isto é o que estou usando para tentar alcançar o resultado desejado:

awk '{printf $1 "," $2 "," $4 "," $3 ",";{for(i=5; i<NF; i++) printf "%s",$i OFS; if(NF) printf "%s",$NF; printf ORS}}' file.txt > file1.txt

(echo "Heading1,H2,H3,H4,H5" ; cat file1.txt) > file.csv

A saída desejada está gerando uma nova linha no final de cada entrada, não sei por que. Eu sou muito novo no awk e no Unix, em geral. Qualquer forma de ajuda é apreciada.

    
por Cartwig 25.11.2015 / 04:02

1 resposta

1

Encontrou a solução aqui awk sem imprimir nova linha .

A variável ORS (Output Record Separator) no padrão do AWK é "\ n" e é impressa após cada linha.

    
por 25.11.2015 / 15:24

Tags