Как выбрать определенный столбец в команде linux df

Я пытаюсь собрать информацию о количестве свободного места на разных серверах. Поэтому, когда я выполняю df -k я получаю вывод как:

Filesystem  1024-blocks    Used     Avail Capacity  Mounted on
/dev/ad1s1f   125925198 2568970 113282214     2%    /builds

И иногда вывод выглядит так:

Filesystem           1K-blocks      Used Available Use% Mounted on
10.102.1.123:/storage/disk1/build
                     10735331328 10597534720 137796608  99% /buildbackup

Теперь я хочу получить данные о доступном дисковом пространстве. Итак, дайте мне знать, как получить данные из определенного столбца.

2 ответа

Вы можете, например, сказать:

df --output=source,avail

Или, как прокомментировал Тим Банс, вы можете использовать --direct чтобы избежать длинного имени файловой системы, разделите строку на две части. Это покажет файловую систему как -,

От man df:

--output [= field_list]

используйте выходной формат, определенный FIELD_LIST, или напечатайте все поля, если FIELD_LIST опущен.

...

FIELD_LIST - это список разделенных запятыми столбцов, которые нужно включить. Допустимые имена полей: "source", "fstype", "itotal", "iused", "iavail", "ipcent", "size", "used", "util", "pcent" и "target" (см. информационная страница).

--непосредственный

показать статистику для файла вместо точки монтирования

Тестовое задание

$ df --output=source,avail
Filesystem               Avail
/dev/sda7            321675536

Решение Федорки чище, но работает только для df

Более общий подход состоит в том, чтобы свернуть несколько пробелов в одну пробел, используя sed 's/ \+/ /g' или же tr -s ' 'затем используйте cut с пробелами в качестве разделителей: cut -d" " -f 4Итак, команда:

df -k | tr -s ' ' | cut -d" " -f 4

Что приводит к чему-то вроде этого:

Available
26027952
854220
68376208

Тот же подход будет работать с другими командами, которые выводят данные в столбцы. Например ls -l | tr -s ' ' | cut -d" " -f 6,7,8напечатает столбцы времени из ls -l:

Dec 30 17:46
Mar 1 15:33
Mar 1 14:58
Mar 2 00:00
Jan 5 14:20
Mar 1 15:33
Feb 26 11:57
Feb 4 11:11
Mar 1 14:57
Другие вопросы по тегам