Разобрать вывод df по столбцам

1013
Danny

У меня возникают трудности при извлечении файловой системы и монтирования на столбцах из вывода df.

$df -Hl 

Результаты в

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 

Добавление выбора столбца

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

результаты в

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

В столбце My Mounts on есть пробелы в имени файла, которое отбрасывает результаты. (т.е. я получаю «НЕТ» вместо «НЕТ ИМЯ») Как получить в столбцах полное имя монтирования?

4
Я думаю, что разбор df так же плох, как разбор ls .... можете ли вы получить информацию о монтировании из / sys или / proc как? djsmiley2k 7 лет назад 0
`diskutil list external` Возвращает` / dev / disk2 (внешний, физический): #: ИДЕНТИФИКАТОР ИМЕНИ ТИПА ТИПА 0: FDisk_partition_scheme * 16,0 ГБ disk2 1: Windows_FAT_32 НЕТ ИМЯ 16,0 ГБ disk2s1 / dev / disk3 (внешний, физический): #: ИДЕНТИФИКАТОР ИМЕНИ ИМЕНИ ТИПА 0: FDisk_partition_scheme * 15,5 ГБ, диск3 1: Windows_FAT_32 ФЛЕШ-ДИСК, 15,5 ГБ, диск3s1` Это выглядит сложнее !? Danny 7 лет назад 0
Поддерживает ли ваша версия `df` параметр` --output`? df --output = источник, цель choroba 7 лет назад 0
@choroba - нет, боюсь, что нет. Danny 7 лет назад 0

1 ответ на вопрос

0
Barmar

Поскольку поле с пробелами является последней частью строки, вы можете просто захватить все поля с 9 до конца.

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

Это будет работать до тех пор, пока части имени точки монтирования просто разделены одним пробелом - несколько пробелов и / или вкладок будут сжаты в один пробел.

И ни в одном из других полей не может быть пробелов.