linux - 在 Linux 中比较文本文件中两列的特定部分

标签 linux text multiple-columns

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


    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 并打印输出的方法吗?提前致谢。

最佳答案

正如 Shawn 所说,您可以使用 awk...或 perl...或 sed 来完成此操作。

AWK 示例可能是

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

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

关于linux - 在 Linux 中比较文本文件中两列的特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59027111/

相关文章:

regex - shell grep,正则表达式查找特定事件

ruby - Vagrant ssh 使用 -c 或 --COMMAND 导致 session 关闭

linux - 如何使用 shell 脚本在/etc/sudoers 文件的末尾添加一行(不使用 pssh 工具)

r - 将R中的多个二进制列合并为一列并保留位置

linux - 如何在不丢失当前命令的情况下重置终端?

r - 使用 unnest_tokens() 标记句子,忽略缩写

audio - 如何使AIML机器人发出声音响应?有没有办法使这种声音成为自定义声音?

c# - 将字符串写入文本文件并确保它始终覆盖现有内容。

html - 使列内的元素保持在底部

html - 如何保持相同大小的 Bootstrap 列以便它们正确捕捉?