join -a 1 -a 2 -e '0' -o 1.1 1.2 2.2 file1 file2 > tmp
join -a 1 -a 2 -e '0' -o 1.1 1.2 1.3 2.2 tmp file3
---------- Post updated at 12:28 ---------- Previous update was at 12:16 ----------
Here is an approach using awk based on some assumptions:
awk '
BEGIN {
F = "file1"
while ( (getline line < F) > 0 )
{
split (line, A)
F1[++c] = A[2]
}
close (F)
F = "file2"
while ( (getline line < F) > 0 )
{
split (line, A)
F2[A[1]] = A[2]
}
close (F)
F = "file3"
while ( (getline line < F) > 0 )
{
split (line, A)
F3[A[1]] = A[2]
}
close (F)
}
END {
for ( k = 1; k <= c; k++ )
print k, F1[k], F2[k]?F2[k]:"0", F3[k]?F3[k]:"0"
}
' /dev/null