AWK:在第1列和第2列时删除所有行; 2场比赛 [英] AWK: Delete All Lines When Columns 1 & 2 Match

查看:85
本文介绍了AWK:在第1列和第2列时删除所有行; 2场比赛的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不仅要删除重复项,还要删除出现重复项时要检查的行.

I'd like to not just delete the duplicates, but also the line being check when a duplicate occurs.

现有代码

awk '!a[$1$2]++'

输入

HNSONV  LSVRNV  10  srlg-value  52000
HNSONV  PHNAAZ  0   srlg-value  53000
HRHNLA  PNSCFL  0   srlg-value  54000
HRHNLA  PNSCFL  10  srlg-value  55000
HRHNLA  PNSCFL  20  srlg-value  54500
HRHNLA  PNSCFL  30  srlg-value  55500
JHSNAR  KSCYMO  0   srlg-value  56000
JHSNAR  OKCYOK  0   srlg-value  57000

输出

HNSONV  LSVRNV  10  srlg-value  52000
HNSONV  PHNAAZ  0   srlg-value  53000
JHSNAR  KSCYMO  0   srlg-value  56000
JHSNAR  OKCYOK  0   srlg-value  57000

推荐答案

两次通过算法

$ awk 'NR==FNR{a[$1,$2]++; next} a[$1,$2]==1' file{,}

HNSONV  LSVRNV  10  srlg-value  52000
HNSONV  PHNAAZ  0   srlg-value  53000
JHSNAR  KSCYMO  0   srlg-value  56000
JHSNAR  OKCYOK  0   srlg-value  57000

请注意数组键中的,,以防止由于两个字符串的连接而导致误报(例如,"AB A"和"A BA"将在您的版本中使用相同的键).

note the , in the array keys to prevent false positive matches due to concatenation of two strings (e.g. "AB A" and "A BA" will end up the same key in your version).

这篇关于AWK:在第1列和第2列时删除所有行; 2场比赛的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆