in reply to A little golf anyone?

How about 114 (including the 'du -k|':

df -k|perl -ape'map{while(1024<$_){$_/=1024;$i++}$i="%6.1f".substr"KMG +",$i,1;$_=sprintf$i,$_}@F[1..3];$_=join"\t",@F,$/'

Output using the sample data looks like this:

/dev/dsk/c0t1d0s1 1.2G 795.7M 382.2M 68% /usr /dev/dsk/c0t1d0s3 239.7M 43.5M 172.2M 21% /var /dev/dsk/c0t1d0s0 414.6M 182.8M 190.3M 49% /home

I didn't come up with a way to cleanly format G to 1 decimal place, leaving K and M at a whole number (ie 1.2G, 240M).

94 if less precision and un-aligned formatting meets your standards :-P

df -k|perl -ape'map{while(1024<$_){$_>>=10;my$i++}$_.=substr"KMG",$i,1 +}@F[1..3];$_=join"\t",@F,$/' Output: /dev/dsk/c0t1d0s1 1G 795M 382M 68% /usr /dev/dsk/c0t1d0s3 239M 43M 172M 21% /var /dev/dsk/c0t1d0s0 414M 182M 190M 49% /home

Update: fixed miscounts