使用bash提取X列等于Y列的行

时间:2016-09-19 21:40:58

标签: bash awk sed grep

我有一个看起来像这样的文件:

2 3347485 rs7559860 C G AA=G||| GT  G
2 3347492 . C T AA=C||| GT  C
2 3347560 . C T AA=C||| GT  C
2 3347576 . A T AA=A||| GT  A
2 3347577 . G C AA=G||| GT  G

我想要做的是获取第4列等于第8列(最后一列)的行。在这种情况下,第一行将被删除。

有没有办法用bash做到这一点?

我的愿望输出应如下所示:

2 3347492 . C T AA=C||| GT  C
2 3347560 . C T AA=C||| GT  C
2 3347576 . A T AA=A||| GT  A
2 3347577 . G C AA=G||| GT  G

1 个答案:

答案 0 :(得分:3)

这是awk的量身定制的工作,因为我们正在处理数据的行/列:

awk '$4 == $8' file

2 3347492 . C T AA=C||| GT  C
2 3347560 . C T AA=C||| GT  C
2 3347576 . A T AA=A||| GT  A
2 3347577 . G C AA=G||| GT  G

$4 == $8检查第4列与第8列的相等性。

参考: Effective AWK Programming