如何使用awk或grep比较基于列的行



我想逐行比较我的数据。每个条目都有一个副本,有些条目在某些列中有所不同(以制表符分隔)。作为的一个例子

1   0   chrX    121843122   255 16M
1   0   chrX    79062186    250 16M
2   0   chr3    79062186    255 16M
2   0   chr7    79062186    255 16M
3   0   chr3    166649831   255 16M   
3   0   chrX    12345678    255 16M

我想知道这对(基于column1)是否都有chrX,其余的列可能不同。

在上面的例子中,我将只保留(对于两者,第1列相同,第3列为chrX才重要。)

1   0   chrX    121843122   255 16M
1   0   chrX    79062186    250 16M

我想在awk中尝试一下,但它似乎只适用于专栏。如何使用awk或grep实现这一点?

这会比较成对的行,如果相应的field1和field3匹配,则同时打印。

awk '{
    prev=$0; f1=$1; f3=$3
    getline 
    if ($1 == f1 && $3 == f3 && $3 == "chrX") {
        print prev
        print
    }
}' filename

最新更新