提取一列中的值等于另一列+1中的值的行?

时间:2016-05-04 20:36:08

标签: shell unix awk

我有一个制表符分隔的文本文件,如下所示:

1   10019   10020   rs775809821
1   10055   10055   rs768019142
1   10107   10108   rs62651026
1   10108   10109   rs376007522
1   10128   10128   rs796688738
1   10138   10139   rs368469931
1   10144   10145   rs144773400
1   10146   10147   rs779258992
1   10149   10150   rs371194064
1   10165   10165   s796884232

我想提取第2列中的值等于第1 + 1列中的值并将它们指向新文件的行。因此,对于上面的示例,所需的输出将是:

1   10019   10020   rs775809821
1   10107   10108   rs62651026
1   10108   10109   rs376007522
1   10138   10139   rs368469931
1   10144   10145   rs144773400
1   10146   10147   rs779258992
1   10149   10150   s371194064

我认为这可以使用awk完成,但我不知道从哪里开始。任何投入将不胜感激。

1 个答案:

答案 0 :(得分:3)

awk '$3 == $2 + 1' < input > output