0

データを 1 行ずつ比較したいと思います。各エントリにはコピーがあり、一部の列が異なります (タブで区切られています)。例として

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 を使用してこれを実装するにはどうすればよいですか?

4

1 に答える 1

1

これは行のペアを比較し、それぞれの field1 と field3 が一致する場合に両方を出力します。

awk '{
    prev=$0; f1=$1; f3=$3
    getline 
    if ($1 == f1 && $3 == f3 && $3 == "chrX") {
        print prev
        print
    }
}' filename
于 2013-07-04T15:55:39.320 に答える