4

我正在尝试用倒数第二列替换第二列,并删除最后三列。例如,我有这个 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 文件为每一行添加一个新段落,如所需的输出?谢谢。

4

2 回答 2

5

\r在每一行的末尾添加一个回车符( )应该会有所帮助:

awk 'BEGIN{FS=OFS=","} {$2=$(NF-1); NF=NF-3;sub(/$/,"\r");}'1 sample.csv 
于 2013-07-01T20:56:16.747 回答
2

GNU 的代码:

sed -r 's/(\w,)\w,(\w,)\w,(\w,)\w/\1\3\2/' 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/' 文件
1,5,3
a,e,c
g,k,i
于 2013-07-01T21:30:40.693 回答