This is what I use (SCO, may or may not work with your *nix flavor):
#!/usr/bin/awk -f
# cmd/df.awk Disk Free
BEGIN {
cmd="sync;LANG=C df -tk";fmt="%-28s %-23s%9s %9s %7s\n"
printf fmt,"Répertoire","FileSystem","Total(Mb)","Libre","Occup."
trt=sprintf(fmt,"----------","----------","---------","---------","------"

printf trt
fmt="%-28s %-23s%#9.2f %#9.2f %6.2f%%\n"
while((cmd|getline)==1){
if(substr($1,1,1)=="/"

{
mountDir=$1
mountDev=substr($2,1,1)=="(" ? substr($2,2) : $2
sub(/[) \t]*:$/,"",mountDev)
Free=(substr($3,1,1)=="

" ? $4 : $3)/1000
} else if($0~/otal/){
Tot=($1~/otal/ ? $2 : $1)/1000
if(Tot){
printf fmt,mountDir,mountDev,Tot,Free,100*(Tot-Free)/Tot
tTot+=Tot;tFree+=Free;Nb++
}}
}; close(cmd)
exit
}
END {
if(tTot && Nb>1){
printf trt""fmt,"Recap","Tous",tTot,tFree,100*(tTot-tFree)/tTot
}}
Hope This Help
PH.