こんなの。あとは awk で要るとこだけつなげばいい。
#! /bin/ksh
f1=/etc/passwd
f2=/etc/shadow

cat $f1 | while read l; do
u=${l%%:*}
l=${l}:`egrep ^$u $f2`
echo $l
done