1
列とに基づいて結合/マージしようとしている 2 つのファイルがあり2
ます。これらは次のようになります。( 行) は (file1
行)58210
よりもはるかに短く、フィールドとインデックスに基づいてこれら 2 つのファイルの共通点を見つけたいと思います。file2
815530
1
2
file1
:
2L 25753 33158
2L 28813 33158
2L 31003 33158
2L 31077 33161
2L 31279 33161
3L 32124 45339
3L 33256 45339
...
file2
:
2L 20242 0.5 0.307692307692308
2L 22141 0.32258064516129 0.692307692307692
2L 24439 0.413793103448276 0.625
2L 24710 0.371428571428571 0.631578947368421
2L 25753 0.967741935483871 0.869565217391304
2L 28813 0.181818181818182 0.692307692307692
2L 31003 0.36 0.666666666666667
2L 31077 0.611111111111111 0.931034482758621
2L 31279 0.75 1
3L 32124 0.558823529411765 0.857142857142857
3L 33256 0.769230769230769 0.90625
...
次のいくつかのコマンドを使用してきましたが、最終的に異なる行数になります。
awk 'FNR==NR{a[$1$2]=$3;next} {if($1$2 in a) print}' file1 file2 | wc -l
awk 'FNR==NR{a[$1$2]=$3;next} {if($1$2 in a) print}' file2 file1 | wc -l
1
なぜこれが起こるのかわかりません.どちらかのファイルに(列とに基づいて)行が重複している場合に備えて、比較する前に並べ替えを試みましたが2
、役に立たないようです. (これがなぜそうであるかについての洞察も高く評価されます)
file2
ファイルをマージして、対応する列が含ま1
れている行だけが印刷され、列2
が追加されて、次のようになるようにするにはどうすればよいですか。file1
3
file1
2L 25753 0.967741935483871 0.869565217391304 33158
2L 28813 0.181818181818182 0.692307692307692 33158
2L 31003 0.36 0.666666666666667 33158
2L 31077 0.611111111111111 0.931034482758621 33161
2L 31279 0.75 1 33161
3L 32124 0.558823529411765 0.857142857142857 45339
3L 33256 0.769230769230769 0.90625 45339