AWK:在第1列和第2列时删除所有行; 2场比赛 [英] AWK: Delete All Lines When Columns 1 & 2 Match
本文介绍了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屋!
查看全文