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.
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.
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.