最初の列に基づいて複数のファイルを1つのファイルに貼り付けます。

最初の列に基づいて複数のファイルを1つのファイルに貼り付けます。

ファイルが複数あり、各ファイルの最初の列に基づいてマージする必要があります。

ファイル1:

foo  12  
jhdfeg 25  
kjfdgkl 37

ファイル2:

foo 23  
jhdfeg 45

ファイル3:

foo 35  
djhf 37  

出力は次のようにする必要があります

        file1 file2  file3  
foo     12    23     35  
jhdfeg  25    45     0  
kjfdgkl 37    0      0  
djhf    0     0      37

ベストアンサー1

アッ方法:

joiner.awkスクリプト:

#!/bin/awk -f
BEGIN { 
    f1=ARGV[1]; f2=ARGV[2]; f3=ARGV[3]     # the 1st, 2nd and 3rd file names respectively
    printf("%10s\t%s\t%s\t%s\n", "", f1, f2, f3)   # printing header
}
{ a[$1][FILENAME]=$2 }    # accumulating values
END {
    for (i in a) {
        printf("%-10s\t%d\t%d\t%d\n", i, a[i][f1], a[i][f2], a[i][f3]) 
    }
}

使用法:

awk -f joiner.awk file1 file2 file3

出力:

          file1 fil2 file3
kjfdgkl     37  0   0
foo         12  23  35
djhf        0   0   37
jhdfeg      25  45  0

おすすめ記事