ファイルが複数あり、各ファイルの最初の列に基づいてマージする必要があります。
ファイル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