Analyse der df-Ausgabe nach Spalten

1143
Danny

Ich habe Schwierigkeiten beim Extrahieren des Dateisystems und der Bereitstellung von Spalten aus der Df-Ausgabe.

$df -Hl 

Ergebnisse in

Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/disk1 250G 226G 24G 91% 1576021 4293391258 0% / localhost:/BJeZ62GypQBU7sxaZg0qP6 250G 250G 0B 100% 0 0 100% /Volumes/MobileBackups /dev/disk2s1 16G 4.7G 11G 30% 0 0 100% /Volumes/NO NAME /dev/disk3s1 15G 8.0G 7.5G 52% 0 0 100% /Volumes/FLASH DRIVE 

Spaltenauswahl hinzufügen

df -Hl | awk '{ print $1"\t"$9 }' 

führt in

Filesystem Mounted /dev/disk1 / localhost:/BJeZ62GypQBU7sxaZg0qP6 /Volumes/MobileBackups /dev/disk2s1 /Volumes/NO /dev/disk3s1 /Volumes/FLASH 

Meine gemountete Spalte enthält Leerzeichen im Dateinamen, wodurch Ergebnisse ausgegeben werden. (dh ich bekomme "NO" anstelle von "NO NAME") Wie erhalte ich die Spalten, um den gesamten Mount-Namen zu enthalten?

4
Ich denke, das Parsen von df ist genauso schlecht wie das Analysieren von ls .... können Sie die Mount-Informationen von / sys oder / proc abrufen, wie? djsmiley2k vor 7 Jahren 0
`diskutil list external` Gibt` / dev / disk2 (extern, physisch) zurück: #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme * 16.0 GB disk2 1: Windows_FAT_32 NO NAME 16.0 GB disk2s1 / dev / disk3 (extern, physisch): #: TYPenname Größenbezeichnung 0: FDisk_partition_scheme * 15,5 GB disk3 1: Windows_FAT_32 FLASH DRIVE 15,5 GB disk3s1` Das sieht härter aus !? Danny vor 7 Jahren 0
Unterstützt Ihre Version von `df` die Option` --output`? df --output = Quelle, Ziel choroba vor 7 Jahren 0
@choroba - nein, ich habe keine Angst. Danny vor 7 Jahren 0

1 Antwort auf die Frage

0
Barmar

Da das Feld mit Leerzeichen der letzte Teil der Zeile ist, können Sie einfach alle Felder von 9 bis zum Ende greifen.

df -Hl | awk '{ mounted=$9;  for (i = 10; i <= NF; i++) mounted = mounted " " $i; print $1 "\t" mounted }' 

Dies funktioniert, solange die Teile des Mountpunktnamens nur durch Leerzeichen getrennt sind. Mehrere Leerzeichen und / oder Registerkarten werden in ein einzelnes Leerzeichen komprimiert.

Und keines der anderen Felder darf Leerzeichen enthalten.