Text-Processing

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

  • August 21, 2018

我一直在尋找答案,但我發現只是混亂的解決方案,我有一個這樣的 .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

我不知道序列號發生了什麼。

這應該可以正常工作:

awk 'BEGIN{FS=OFS=","}{$0=$3 FS $1 FS $2}1'
perl -F, -ple '$_ = join ",", @F[2,0,1]'

引用自:https://unix.stackexchange.com/questions/354864