15

My "df -h" command on my Linux box has some devices with longer names and so the "df -h" output has line breaks (or tabs??) in it, which makes it difficult to parse the output in a script.

Does anyone know how I can suppress the linebreaks so that the latter of the following outputs is what I get:

[root@me ~]# df -kh
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      3.9G  404M  3.3G  11% /
/dev/mapper/VolGroup00-LogVol05
                      3.9G  442M  3.3G  12% /home
/dev/mapper/VolGroup00-LogVol04
                      3.9G  261M  3.5G   7% /var
/dev/mapper/VolGroup00-LogVol03
                      3.9G  137M  3.6G   4% /tmp
/dev/mapper/VolGroup00-LogVol02
                      7.8G  3.6G  3.8G  49% /usr

And the desired format is:

[root@me ~]# df -kh
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00   3.9G  404M  3.3G  11% /
/dev/mapper/VolGroup00-LogVol05   3.9G  442M  3.3G  12% /home
/dev/mapper/VolGroup00-LogVol04   3.9G  261M  3.5G   7% /var
/dev/mapper/VolGroup00-LogVol03   3.9G  137M  3.6G   4% /tmp
/dev/mapper/VolGroup00-LogVol02   7.8G  3.6G  3.8G  49% /usr
user606723
  • 1,802
djangofan
  • 3,874

2 Answers2

18

Try: df -Pkh

The P stands for "portable", and will force it to follow POSIX standard output.
I have a hunch will fix any clever formatting that df tries to do.

In the future when you try to solve problems like these, try man df and see if you can find anything that looks like it might work... cause thats what I did =)

user606723
  • 1,802
2
 df -Ph | awk '{printf "%-35s%-10s%-10s%-10s%-5s%s\n",$1,$2,$3,$4,$5,$6}'
muru
  • 207,228