Что-то вроде этого возможно:
{
lines[NR] = $0
}
END {
for(i=1;i<=length(lines);i++){
split(lines[i], current)
split(lines[i+1], after)
if((current[1] == after[1]) && (current[2] == after[2])){
print lines[i+1]
i+=1
}
else{
print lines[i]
}
}
}
Выход:
$ awk -f s.awk input
1 100 A T
1 101 T TT
2 1000 C T
2 1001 T A
или, как указал @ripat, используйте sort (вместе с tac
, чтобы сначала перевернуть список, чтобы выбрать второе совпадение):
$ tac input | sort -k1,1n -k2,2n -u
1 100 A T
1 101 T TT
2 1000 C T
2 1001 T A
Серьезно, начните принимать некоторые ответы, которые вы получили! В противном случае вероятность того, что люди будут отвечать на ваши вопросы, будет очень близка к 0, прочитайте FAQ https://stackoverflow.com/faq