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

如何使用awk或grep比较基于列的行,awk,grep,compare,line,Awk,Grep,Compare,Line,我想逐行比较我的数据。每个条目都有一个副本,有些条目在某些列中有所不同(以制表符分隔)。例如 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 1234

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

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才重要。)


我想在awk中尝试一下,但它似乎只在专栏方面起作用。如何使用awk或grep实现此功能?

这将比较行对,如果相应的字段1和字段3匹配,则同时打印

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

是否要筛选与第一行相似的所有行?(这意味着您要计算该行的出现次数)但如果第一列和第三列相同,这似乎是可行的。我希望第一列是相同的,在第三列中,我对chrX特别感兴趣。例如,我对那些列1相同,列3是chr1的列不感兴趣。第3列中的两个都应该是chrX。这就是
&&$3==“chrX”
条件所针对的hi@glennjackman我又遇到了一些代码问题。
awk '{
    prev=$0; f1=$1; f3=$3
    getline 
    if ($1 == f1 && $3 == f3 && $3 == "chrX") {
        print prev
        print
    }
}' filename