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

标签 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 来完成,但我不知道从哪里开始。任何投入将不胜感激。

最佳答案

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

关于shell - 提取其中一列中的值等于另一列中的值 +1 的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37037534/

相关文章:

shell - 将 Markdown 文件重新格式化为特定的代码风格

shell - 如何在不使用 winscp/任何工具的情况下将压缩文件夹从桌面传输到 unix 服务器?

c - 仅当不是目录时才打开文件

linux - 根据第一列/行中的字符长度对文件进行排序

linux - 如何在子shell中找出父shell的用户?

ios - 无法通过 jenkins shell 脚本使用 xcodebuild 命令创建 IPA

linux - Emacs...作为您的默认 shell ?

unix - 添加/叠加两个wav文件

regex - 使用 SED 替换缩进的文本

linux - 如何使用 shell 脚本从文件中读取元素,进行一些计算并写回?