我是awk的新手,无法找到最好的方法 . 我有几千个xml文件,我已经使用sed和awk将重复项和分割的字段删除到单个文件中的单个列中 .
现在我想将列表组装成一行包含多个字段的csv文件 . 在固定数量的字段之后,我想开始一个新行 .
例
1234
2345
345678
4.23456E3
54321
654321
789
87654.100
9876
10.0
1234
2345
345678
4.23456E3
54321
654321
789
87654.100
9876
11.0
产量
1234, 2345, , 345678, 4.23456E3, 54321, 654321, 789, , 87654.100, 9876, , 10.0
1234, 2345, , 345678, 4.23456E3, 54321, 654321, 789, , 87654.100, 9876, , 11.0
谢谢
4 回答
是否允许使用
xargs
?我在这里得到这个输出:
但是,如果你开始使用XML,你应该考虑使用XSLT .
如果每一行都有相同数量的字段,比如5,我会做类似的事情
awk ' { printf("%s",$1); if (NR % 5 == 0) {printf("\n")} else {printf(",")}}' youtfile.txt
NR是awk读取的行数,%是余数运算符 . 因此,如果读取的行数是5的倍数(在这种情况下),它将打印换行符,否则将打印逗号 .
这假定您的示例中每行一个字段,输入中的空白行将对应于CSV中的空白字段 .
使用
sed
的一种方法:内容
script.sed
:运行它像:
输出如下:
这可能对你有用:
或者这个(GNU sed):