【问题标题】:Reorder columns in a CSV file by number按数字对 CSV 文件中的列重新排序
【发布时间】:2013-06-29 02:25:33
【问题描述】:

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

【问题讨论】:

  • 如果这有帮助,我知道每一行都有完全相同的列数。所以在示例中,每行总是有三个项目。
  • 不使用记事本,而是使用正版文本编辑器怎么样?

标签: regex bash csv sed awk


【解决方案1】:

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

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

【讨论】:

    【解决方案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

    【讨论】:

      猜你喜欢
      • 2022-11-04
      • 2015-12-24
      • 2021-12-28
      • 2015-08-28
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多