αԋɱҽԃ αмєяιcαη Asked: 2017-11-26 16:03:47 +0800 CST2017-11-26 16:03:47 +0800 CST 2017-11-26 16:03:47 +0800 CST 根据第一个逗号之前的匹配删除重复行数 772 我在 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 awk sed 2 个回答 Voted Best Answer iruvar 2017-11-26T16:27:30+08:002017-11-26T16:27:30+08:00 这里有几个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 RomanPerekhrest 2017-11-27T03:24:18+08:002017-11-27T03:24:18+08:00 简短的 GNU datamash+sed组合: datamash -sft',' -g1 count 1 <file | sed -n 's/,1$//p' 上述管道的第一个过程将计算每组第一个字段值(按 分组-g1)中的项目数,并将结果计数添加为最后一个字段
这里有几个
awk
两遍解决方案。第一遍将场 1 的频率存储到一个数组x
中。x
如果将字段 1 的频率报告为 1,则第二遍打印一行简短的 GNU
datamash
+sed
组合:上述管道的第一个过程将计算每组第一个字段值(按 分组
-g1
)中的项目数,并将结果计数添加为最后一个字段