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
In reply to Re: A little golf anyone?
by jsprat
in thread A little golf anyone?
by deprecated
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |