根据第一个逗号之前的匹配删除重复行数

根据第一个逗号之前的匹配删除重复行数

我在 Linux Centos 7 服务器上有大文本,我想删除第一个逗号之前匹配的行

输入:

112112112,00,00,00
110110,01,01,02
112112112,11,11,888
110110,99,88,8
410410,22,22,22

输出:

410410,22,22,22

答案1

这里有一些awk双通道解决方案。第一遍将字段 1 的频率存储到数组中x。如果x将字段 1 的频率报告为 1,则第二遍将打印一行

awk -F, 'first_pass{x[$1]++; next}; x[$1] == 1' first_pass=1 file first_pass=0 file

awk -F, 'BEGIN{while ((getline<ARGV[1]) > 0)x[$1]++}; x[$1] == 1' file

答案2

短GNUdatamash+sed组合:

datamash -sft',' -g1 count 1 <file | sed -n 's/,1$//p'

上述管道的第一个进程将计算第一个字段值的每组中的项目数(按 分组-g1),并将结果计数添加为最后一个字段

相关内容