在bash中,如何在csv中切换2列(第二列切换为最后一列),并用引号除以,
?
输入文件
...
232948,55,Titulka,"Vnitřní štuk, jemný 25 kg",https://eshop.unihobby.cz/stavba-stavebni-materialy-sparovaci-hmoty-a-stuky-stuk-vnitrni-jemny-25kg/142812p/?utm_source=kupi&utm_medium=letak&utm_campaign=9_2019,https://eshop.unihobby.cz/bin/product/4/232948.jpg
232948,55,Titulka,Vnitřní štuk jemný 25 kg,https://eshop.unihobby.cz/stavba-stavebni-materialy-sparovaci-hmoty-a-stuky-stuk-vnitrni-jemny-25kg/142812p/?utm_source=kupi&utm_medium=letak&utm_campaign=9_2019,https://eshop.unihobby.cz/bin/product/4/232948.jpg
232948,79,Titulka,Vnitřní štuk jemný 25 kg,https://eshop.unihobby.cz/stavba-stavebni-materialy-sparovaci-hmoty-a-stuky-stuk-vnitrni-jemny-25kg/142812p/?utm_source=kupi&utm_medium=letak&utm_campaign=9_2019,https://eshop.unihobby.cz/bin/product/4/232948.jpg
232948,79,Titulka,Vnitřní štuk jemný 25 kg,https://eshop.unihobby.cz/stavba-stavebni-materialy-sparovaci-hmoty-a-stuky-stuk-vnitrni-jemny-25kg/142812p/?utm_source=kupi&utm_medium=letak&utm_campaign=9_2019,https://eshop.unihobby.cz/bin/product/4/232948.jpg
...
预期产量
...
232948,Titulka,"Vnitřní štuk, jemný 25 kg",https://eshop.unihobby.cz/stavba-stavebni-materialy-sparovaci-hmoty-a-stuky-stuk-vnitrni-jemny-25kg/142812p/?utm_source=kupi&utm_medium=letak&utm_campaign=9_2019,https://eshop.unihobby.cz/bin/product/4/232948.jpg,55
232948,Titulka,Vnitřní štuk jemný 25 kg,https://eshop.unihobby.cz/stavba-stavebni-materialy-sparovaci-hmoty-a-stuky-stuk-vnitrni-jemny-25kg/142812p/?utm_source=kupi&utm_medium=letak&utm_campaign=9_2019,https://eshop.unihobby.cz/bin/product/4/232948.jpg,55
232948,Titulka,Vnitřní štuk jemný 25 kg,https://eshop.unihobby.cz/stavba-stavebni-materialy-sparovaci-hmoty-a-stuky-stuk-vnitrni-jemny-25kg/142812p/?utm_source=kupi&utm_medium=letak&utm_campaign=9_2019,https://eshop.unihobby.cz/bin/product/4/232948.jpg,79
232948,Titulka,Vnitřní štuk jemný 25 kg,https://eshop.unihobby.cz/stavba-stavebni-materialy-sparovaci-hmoty-a-stuky-stuk-vnitrni-jemny-25kg/142812p/?utm_source=kupi&utm_medium=letak&utm_campaign=9_2019,https://eshop.unihobby.cz/bin/product/4/232948.jpg,79
...
我尝试过
awk -F ',' ' { t = $2; $2 = $6; $6 = t; print; } ' OFS=',' "input-file.csv" > "output-file.csv"
它可以工作,但是对于带引号的行来说,这是有问题的,它也需要在,
中使用"
。
如何使用"
进行数组处理?
谢谢。
答案 0 :(得分:3)
要确保GC.Collect()
不会在字段中引起逗号混乱,请将awk
与FPAT
一起使用
gnu awk
awk -v FPAT="([^,]+)|(\"[^\"]+\")" -v OFS=, '{$0=$0OFS$2;$2=f;sub(/,,/,",")}1' file
232948,Titulka,"Vnitřní štuk, jemný 25 kg",https://eshop.unihobby.cz/stavba-stavebni-materialy-sparovaci-hmoty-a-stuky-stuk-vnitrni-jemny-25kg/142812p/?utm_source=kupi&utm_medium=letak&utm_campaign=9_2019,https://eshop.unihobby.cz/bin/product/4/232948.jpg,55
232948,Titulka,Vnitřní štuk jemný 25 kg,https://eshop.unihobby.cz/stavba-stavebni-materialy-sparovaci-hmoty-a-stuky-stuk-vnitrni-jemny-25kg/142812p/?utm_source=kupi&utm_medium=letak&utm_campaign=9_2019,https://eshop.unihobby.cz/bin/product/4/232948.jpg,55
232948,Titulka,Vnitřní štuk jemný 25 kg,https://eshop.unihobby.cz/stavba-stavebni-materialy-sparovaci-hmoty-a-stuky-stuk-vnitrni-jemny-25kg/142812p/?utm_source=kupi&utm_medium=letak&utm_campaign=9_2019,https://eshop.unihobby.cz/bin/product/4/232948.jpg,79
232948,Titulka,Vnitřní štuk jemný 25 kg,https://eshop.unihobby.cz/stavba-stavebni-materialy-sparovaci-hmoty-a-stuky-stuk-vnitrni-jemny-25kg/142812p/?utm_source=kupi&utm_medium=letak&utm_campaign=9_2019,https://eshop.unihobby.cz/bin/product/4/232948.jpg,79
这定义了字段的外观,而不是字段分隔符FPAT="([^,]+)|(\"[^\"]+\")"
将第二个字段移到结尾并删除第二个字段。$0=$0OFS$2;$2=f;sub(/,,/,",")
正确,默认操作1