Получение определенного значения от “df-h” использующий оболочку

Когда я использую df-h, я получаю следующий вывод:

Размер файловой системы используемый % использования пользы, смонтированный на

/dev/mapper/VolGroup00-LogVol00 59G 2.2G 54G 4% /

/dev/sda1 122M 38M 78M 33% / начальная загрузка

tmpfs 1.1G 0 1.1G 0%/dev/shm

10.10.0.105:/somepath

                   11T  8.4T  2.1T  81% /storage4

10.11.0.101:/somepath

                   15T  8.9T  5.9T  61% /storage1

/dev/mapper/patha 5.0T 255G 4.8T 5%/storage5_vol0

/dev/mapper/pathb 5.0T 195G 4.9T 4%/storage5_vol1

/dev/mapper/pathc 5.0T 608G 4.5T 12%/storage5_vol2

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

Я раньше использовал

df-k/storage_name | хвост-1 | awk '{печатают 3$}'

Но столбец FileSystem может иметь значение или нет.. который заменил бы переменную моего сценария от 3$ до 4$.

Как я могу получить Пользу на единственной командной строке, даже при отсутствии значений на предыдущих столбцах?

2
задан 15.03.2011, 17:37

4 ответа

Просто включите POSIX совместимый вывод (-P) к df:

$ df -Pk /dev/sda1 | tail -n 1 | awk '{print $4}'

Это гарантирует, что формат каждой строки является тем же (никакой перевод строки после долгих имен устройств).

3
ответ дан 08.12.2019, 05:51

Используйте-P опцию для df, чтобы удостовериться, что вывод нормализован, и не splitted ко многим строкам.

И, так или иначе - можно также всегда использовать $ (NF-2) для печати доступного столбца.

2
ответ дан 08.12.2019, 05:51

Отделайтесь от переменной NF (количество полей). Что-то как:

df-k/storage_name|tail-1 |awk 'NF == 6 {печатают 3$}; NF == 5 {печатают 4$}'

0
ответ дан 08.12.2019, 05:51
df -k /dev | tail -1 | sed s/"^[^0-9]*"// | awk '{print $3}'

Добавление sed удалит все символы нецифры с начала строки. Вы, возможно, должны изменить его немного, если у Вас есть цифры на Ваше имя файловой системы

0
ответ дан 08.12.2019, 05:51

Теги

Похожие вопросы