複数ファイルの選択した列をマージする

複数ファイルの選択した列をマージする

複数のファイル(〜15個)があり、各ファイルには複数のデータ列(タブ区切り)があります。たとえば、

ファイル1

aa1    399     1815
aa2    1908    4064
aa3    4523    5656

ファイル2

bb1    5304317    5305057
bb2    5305057    5305824
bb3    5306871    5307875

など。

各ファイルの2番目の列を読み、並べて印刷して15列の出力を作成したいと思います。たとえば、

出力

399     5304317    7526    12455
1908    5305057    8195    14538
4523    5306871    9216    15150

各列は異なるファイルにあります。最初の列に注意してください出力2列目ですファイル12番目の列出力2列目ですファイル2

ペーストを使ってみました。ただし、各入力ファイルのすべてのデータを配置します。これはどのように達成できますか?

ベストアンサー1

それぞれ3つの列を持つ3つのファイルに対して、次のように使用できます。

pr -m -t -s file1 file2 file3|awk '{printf("%s\t%s\t%s\n",$2,$5,$8)}'

ファイル数とファイルあたりのフィールド数を数えることでラップすることもできますが、これは始点です。

おすすめ記事