有一个文本文件,aboot 超过 10000 行,格式为:
field1 field2 field3 field4 field5 ... fieldX
它需要转换为如下所示:
field1,field2,field4,field3,field5 to fieldX
最后一个字段必须包含从 field5 到行尾的所有内容。最终输出必须导出到 csv 文件。
因此,对于:
123 abc XYZ qwe Abcd Efgh Iklmno Pqr Stu
输出应如下所示:
123,abc,qwe,XYZ,Abcd Efgh Iklmno Pqr Stu
这就是我用来尝试实现所需输出的方法:
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
所需的输出是在每个条目的末尾生成一个新行,我不完全确定为什么。总的来说,我对 awk 和 Unix 很陌生。感谢任何形式的帮助。
答案1
在这里找到了解决方案awk 不打印换行符。
AWK 中的 ORS(输出记录分隔符)变量默认为“\n”,并在每行之后打印。