![如何交换 .csv 文件中的某些列](https://linux22.com/image/108611/%E5%A6%82%E4%BD%95%E4%BA%A4%E6%8D%A2%20.csv%20%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%9F%90%E4%BA%9B%E5%88%97.png)
我一直在寻找答案,但我发现了一些混乱的解决方案,我有一个像这样的 .csv 文件:
device_id,ip_address,serial_number
Arq_Laboratorios_EdifB, 148.228.134.000,FOC1518Z1G8
Arquitectura_Dir, 148.228.134.000,FOC1216U13V
Arq.245, 148.228.134.000,FOC1352V3FE
Barragan_3750, 148.228.134.000,FDO1129Z9ZJ
我只需要交换第 3 列和第 1 列,文件就会变成这样:
serial_number,device_id,ip_address
FOC1518Z1G8,Arq_Laboratorios_EdifB, 148.228.134.000
FOC1216U13V,Arquitectura_Dir, 148.228.134.000
FOC1352V3FE,Arq.245, 148.228.134.000
FDO1129Z9ZJ,Barragan_3750, 148.228.134.000
我很确定应该有一个使用 sed 或 awk 的简单解决方案。
更新:使用这个 awk 'BEGIN{FS=OFS=","}{a=$1; $1=$3; $3=a}1' dispositivos.csv 这是我得到的:
serial_number,ip_address,device_id
, 148.228.134.000, Arq_Laboratorios_EdifB
, 148.228.134.000, Arquitectura_Dir
, 148.228.134.000, Arq.245
, 148.228.134.000, Barragan_3750
我不知道序列号发生了什么。
答案1
这应该可以正常工作:
awk 'BEGIN{FS=OFS=","}{$0=$3 FS $1 FS $2}1'
答案2
perl -F, -ple '$_ = join ",", @F[2,0,1]'