CSV操作,将值减少到新列

时间:2016-11-04 13:34:20

标签: bash csv

我有这个包含数千行的CSV文件。

itemid;name;quantity;price;Weight;Images
45214;"Banana";351;2;1;"http://domain.com/images/image1.jpg,http://domain.com/images/image2.jpg,http://domain.com/images/image3.jpg"

是否有任何简单的方法来添加列并剪切第一个图像路径(并删除将保留的逗号)并将其放入新列。 结果将是:

itemid;name;quantity;price;Weight;Images;Main_Image
45214;"Banana";351;2;1;"http://domain.com/images/image2.jpg,http://domain.com/images/image3.jpg";"http://domain.com/images/image1.jpg"

我使用Debian和Bash

1 个答案:

答案 0 :(得分:0)

你可以试试这个;

awk -F'[;,]' '{if(NR==1) print $1";"$2";"$3";"$4";"$5";"$6";Main_Image"; if(NR>1) print $1";"$2";"$3";"$4";"$5";\""$7","$8";"$6"\""}' yourCSV

测试;

$ awk -F'[;,]' '{if(NR==1) print $1";"$2";"$3";"$4";"$5";"$6";Main_Image"; if(NR>1) print $1";"$2";"$3";"$4";"$5";\""$7","$8";"$6"\""}' test
itemid;name;quantity;price;Weight;Images;Main_Image
45214;"Banana";351;2;1;"http://domain.com/images/image2.jpg,http://domain.com/images/image3.jpg";"http://domain.com/images/image1.jpg"