Komenda „df -h” wstawia podział wiersza na wyjście. Jak to naprawić?

14

Moje polecenie „df -h” na moim Linux-ie ma kilka urządzeń o dłuższych nazwach, więc wyjście „df -h” zawiera podziały wiersza (lub tabulatory?), Co utrudnia parsowanie wyjścia w skrypcie.

Czy ktoś wie, w jaki sposób mogę ukryć łamanie linii, aby uzyskać to drugie z następujących danych wyjściowych:

[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

Pożądany format to:

[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
djangofan
źródło
1
Nie mogę tego przetestować, ponieważ moje ścieżki dysków nie są ogromne jak twoje. Spróbujdf -Pkh
user606723,
1
@ user606723: dlaczego nie podać odpowiedzi?
enzotib
Właśnie to zrobiłem. = p. Na początku nie udzieliłem odpowiedzi, ponieważ było to rażące przypuszczenie, że patrzę na plik man przez dwie sekundy.
user606723,
1
Zastosowanie -hi -krazem nie ma sensu, ponieważ są ze sobą sprzeczne, a ostatni otrzymał „wygrywa” (czyli df -hkdaje 1024 blokuje wyjście natomiast df -khdaje czytelny ludzkiego wyjście).
PerlDuck,

Odpowiedzi:

18

Próbować: df -Pkh

P oznacza „przenośny” i zmusi go do podążania za standardowym wyjściem POSIX.
Mam przeczucie, że naprawi każde sprytne formatowanie, które próbuje wykonać df.

W przyszłości, gdy spróbujesz rozwiązać takie problemy, spróbuj man dfsprawdzić, czy możesz znaleźć coś, co wygląda na to, że mogłoby działać ... bo to właśnie zrobiłem =)

użytkownik606723
źródło
Ack. Używałem „df --help” zamiast „man df”. dzięki za przypomnienie.
djangofan,
2
 df -Ph | awk '{printf "%-35s%-10s%-10s%-10s%-5s%s\n",$1,$2,$3,$4,$5,$6}'
Sumit Chauhan
źródło