【发布时间】:2016-01-25 15:37:35
【问题描述】:
我正在尝试根据前两列的值删除一个非常大的文件(约 100,000 条记录)中的重复行,而不考虑它们的顺序,然后打印这些字段 + 其他列。
所以,从这个输入:
A B XX XX
A C XX XX
B A XX XX
B D XX XX
B E XX XX
C A XX XX
我想要:
A B XX XX
A C XX XX
B D XX XX
B E XX XX
(也就是说,我想删除“B A”和“C A”,因为它们已经以相反的顺序出现;我不在乎接下来的列中的内容,但我也想打印它)
我的印象是使用 awk + 数组应该很容易做到这一点,但我无法提供解决方案。
到目前为止,我正在修改这个:
awk '
NR == FNR {
h[$1] = $2
next
}
$1 in h {
print h[$1],$2}' input.txt
我将第二列存储在由第一列 (h) 索引的数组中,然后检查存储的数组中是否存在第一个字段。然后,打印该行。但是出了点问题,我没有输出。
很抱歉,我的代码一点用都没有,但我有点卡住了。
你有什么想法吗?
非常感谢!
【问题讨论】: