我需要重新组织一个大型 CSV 文件。第一列,目前是 6 位数字,需要拆分,使用逗号作为字段分隔符。
例如,我需要这个:
022250,10:50 AM,274,22,50
022255,11:55 AM,275,22,55
变成了这个:
0,2,2,2,5,0,10:50 AM,274,22,50
0,2,2,2,5,5,11:55 AM,275,22,55
让我知道你的想法!
谢谢!
最佳答案
在 perl 中它要短得多:
perl -F, -ane '$,=","; print split("",$F[0]), @F[1..$#F]' <file>
由于您不了解 perl,请快速解释一下。
-F,
表示输入字段分隔符是逗号(如 awk)。 -a
激活自动拆分(进入数组 @F
),-n
将代码隐式包装在 while (<>) { ... }
中循环,它逐行读取输入。 -e
表示下一个参数是要运行的脚本。 $,
是输出字段分隔符(它以这种方式设置循环的迭代,但是很好)。 split
有明显的目的,你可以看到数组是如何索引/切片的。 print
,当作为这样的参数列出时,使用输出字段分隔符并打印它们的所有字段。在 awk 中:
awk -F, '{n=split($1,a,""); for (i=1;i<=n;i++) {printf("%s,",a[i])}; for (i=2;i<NF;i++) {printf("%s,",$i)}; print $NF}' <file>
关于awk - 使用 awk 将每个字符打印为自己的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2596186/