如何比较 csv 文件中的 2 个列,除以,并且当生成的列中存在时,列,
包含引号,当第 2 列 > 1 列时,然后删除第 2 列(最后一个)列。"
,
我做了类似的事情,比较 2 列,当相等时,删除第 2(最后)列。
awk ' BEGIN{FS=OFS=","} $NF==$(NF-1){$NF=""}1 ' input_file.csv | sed 's/,$//'
文件input_file.csv
.
5,464205,Obal na zahradní topidlo ETNA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-etna/149210p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464205.jpg,559,559
5,464207,Obal na zahradní topidlo PYRAMIDA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-pyramida/149170p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464207.jpg,559,559
2,464548,Elektrický provzdušňovač combi 3 v 1 Scheppach SC 36,https://eshop.unihobby.cz/zahrada-zahradni-technika-sekacky-elektricke-sekacky-elektricky-provzdusnovac-combi-3-v-1-scheppach-sc-36/153943p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464548-sc36-scheppach-diy-garten-ha-kopie.jpg,2790,2790
8,465435,Plechový talíř - Autumn,https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-talir-plechovy-autumn/154256p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/465435.jpg,69,39
8,466378,Proutěný věnec 30 cm - šedá,https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-kruh-prouti-30cm-7-5cm-seda/154288p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/466378-kruh-prouti-30cm7-5cm-seda.png,149,159
所需的输出,使用最后 2 个 cols 除以,
(就在最后一行是 2nd value > 1st value 149 < 159
,所以留下它,否则删除最后一个 col)。
5,464205,Obal na zahradní topidlo ETNA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-etna/149210p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464205.jpg,559
5,464207,Obal na zahradní topidlo PYRAMIDA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-pyramida/149170p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464207.jpg,559
2,464548,Elektrický provzdušňovač combi 3 v 1 Scheppach SC 36,https://eshop.unihobby.cz/zahrada-zahradni-technika-sekacky-elektricke-sekacky-elektricky-provzdusnovac-combi-3-v-1-scheppach-sc-36/153943p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464548-sc36-scheppach-diy-garten-ha-kopie.jpg,2790
8,465435,Plechový talíř - Autumn,https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-talir-plechovy-autumn/154256p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/465435.jpg,69
8,466378,Proutěný věnec 30 cm - šedá,https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-kruh-prouti-30cm-7-5cm-seda/154288p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/466378-kruh-prouti-30cm7-5cm-seda.png,149,159
是否可以仅针对最后一个 col 执行此操作,而是针对行内某处的 col 执行此操作(删除)?
"
如果 csv 中的引用不是,我该怎么做|
?
如果您的文件可以包含带引号的嵌入式分隔符,那么任何基于标准工具的东西
sed
都会awk
变得脆弱——最好使用专用的 CSV 解析库。一种选择是 perl 的Text::CSV模块。例如,给定
然后
请注意,默认情况下,该
print
方法会引用包含空格以及包含分隔符的字段 - 您可以在实例化时通过设置quote_space
ex. 来配置它:要使 perl 支持 unicode,您可能需要添加
-CSDL
. 您可以轻松更改它以比较其他列。splice @f,4 if $f[4] <= $f[3]
(记住,在 perl 中,数组是零索引的)。我有一种感觉,通过有条件地使用miller应该更简单,
put
但是unset $[NF]
我无法使其正常工作。使用 Miller ( https://github.com/johnkerl/miller ),从
并运行
你将会有
如果您的字段分隔符是
|
命令将是如果要比较的不是第 6 列和第 7 列,可以使用要比较的列号修改命令。