首页 > 解决方案 > 在 Linux 中比较文本文件中两列的特定部分

问题描述

我有一个文本文件,其中有几列由制表符分隔,如下所示:


    1    ATGCCCAGA  AS:i:10   XS:i:10  
    2    ATGCTTGA   AS:i:10   XS:i:5  
    3    ATGGGGGA   AS:i:10   XS:i:1  
    4    ATCCCCGA   AS:i:20   XS:i:20 

我现在想比较最后两列 AS:i:(n1) 和 XS:i:(n2) 以仅获取 n1 与 n2 不同的行。所以,我想要的输出是:

    2    ATGCTTGA   AS:i:10   XS:i:5  
    3    ATGGGGGA   AS:i:10   XS:i:1 

你能建议我一些比较 n1 和 n2 并打印输出的方法吗?提前致谢。

标签: linuxtextmultiple-columns

解决方案


正如肖恩所说,您可以在 awk ... 或 perl ... 或 sed 中执行此操作。

一个 AWK 示例可能是

awk '{split($3,a,":");split($4,b,":");if(a[3]!=b[3]) print $0}' infile.txt

如果您熟悉 awk,这应该是不言自明的


推荐阅读