我正在尝试根据第 1 列中的 con 值从大型 csv 文件中删除重复项,但考虑到这一点:
第 3 列可以为空或有多个值,用 分隔。:::
如果第 1 列中有多个重复值,则保留第 3 列中元素数量最多的记录。删除第 3-
列中的数字(如果存在)。
我的输入是:
H1,H2,H3,H4
a,2,8005:::+2287:::3426,2
b,4,1111:::+15-00:::01354,1
b,4,1111:::+1500,1
c,4,2208:::+6583,9
d,5,7761:::+993733:::+53426,4
d,5,7761:::+993-733:::+53-426:::87425,4
d,5,7761:::53-426,4
我想要得到的输出是:
H1,H2,H3,H4
a,2,8005:::+2287:::3426,2
b,4,1111:::+1500:::01354,1
c,4,2208:::+6583,9
d,5,7761:::+993733:::+53426:::87425,4
我当前的脚本仅删除重复项,而无需其他考虑,因为我不知道如何混合这两个脚本以及如何添加条件以保留第 3 列中包含更多元素的记录。
awk -F, '{ gsub(/-/,"", $3); print } ' input.csv > input_without_hyphen.csv
awk -F',' -v OFS=',' '!a[$1]++' input_without_hyphen.csv > output.csv
谢谢你的帮助。
假设:
一个
awk
想法:这会生成:
注意:虽然数据的输出顺序与 OP 的预期输出相同,但并不总是保证顺序;如果行顺序很重要,那么我们需要添加更多代码