我正在尝试用倒数第二列替换第二列,并删除最后三列。例如,我有这个sample.csv
1,2,3,4,5,6
a,b,c,d,e,f
g,h,i,j,k,l
我想输出:
1,5,3
a,e,c
g,k,i
我正在使用此命令:
awk 'BEGIN{FS=OFS=","} {$2=$(NF-1); NF=NF-3}'1 sample.csv
在excel中查看csv文件时效果很好。但是,当我在记事本中查看.csv文件时,我注意到一行中的最后一项连接到下一行中的第一项。所以我得到了
1,5,3a,e,cg,k,i
任何人都可以给我任何关于如何解决问题的建议,这样我就可以让.csv文件为每一行创建一个新的段落,如所需的输出?感谢。
答案 0 :(得分:5)
将回车符(\r
)添加到每行的末尾应该有帮助:
awk 'BEGIN{FS=OFS=","} {$2=$(NF-1); NF=NF-3;sub(/$/,"\r");}'1 sample.csv
答案 1 :(得分:2)
GNU代码sed:
sed -r 's/(\w,)\w,(\w,)\w,(\w,)\w/\1\3\2/' file
$cat file 1,2,3,4,5,6 a,b,c,d,e,f g,h,i,j,k,l $sed -r 's/(\w,)\w,(\w),\w,(\w,)\w/\1\3\2/' file 1,5,3 a,e,c g,k,i