从文本文件中提取特定列

从文本文件中提取特定列

有一个文本文件,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”,并在每行之后打印。

相关内容