如何交换 .csv 文件中的某些列

如何交换 .csv 文件中的某些列

我一直在寻找答案,但我发现了一些混乱的解决方案,我有一个像这样的 .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]'

相关内容