按编号重新排序CSV文件中的列

use*_*881 4 regex csv bash awk sed

我试图用倒数第二列替换第二列,并删除最后三列.例如,我有这个sample.csv

1,2,3,4,5,6
a,b,c,d,e,f
g,h,i,j,k,l
Run Code Online (Sandbox Code Playgroud)

我想输出:

1,5,3
a,e,c
g,k,i
Run Code Online (Sandbox Code Playgroud)

我正在使用此命令:

awk 'BEGIN{FS=OFS=","} {$2=$(NF-1); NF=NF-3}'1 sample.csv
Run Code Online (Sandbox Code Playgroud)

当我在excel中查看csv文件时,它可以正常工作.但是,当我在记事本中查看.csv文件时,我注意到一行中的最后一项连接到下一行中的第一项.所以我得到了

1,5,3a,e,cg,k,i
Run Code Online (Sandbox Code Playgroud)

任何人都可以给我任何关于如何解决问题的建议,这样我就可以得到.csv文件,为每一行创建一个新的段落,如所需的输出?谢谢.

iru*_*var 5

在\r每行末尾添加回车符()应该有助于:

awk 'BEGIN{FS=OFS=","} {$2=$(NF-1); NF=NF-3;sub(/$/,"\r");}'1 sample.csv 
Run Code Online (Sandbox Code Playgroud)