Как насчет чистого решения Grep?
df -k | grep var | grep -o '[0-9]*%'
Вы можете присоединиться к этим двум грепсам с помощью небольшой помощи Perl Regexp:
df -k | grep -Po 'var.* \K[0-9]*%'
Вы можете использовать:
.... | awk '{print $(NF-1)}'
Это может вызвать печать заголовка вывода df
, если он содержит шаблон grep
. Чтобы избежать этого, вы можете:
.... | awk '$(NF-1) ~ /%/'
Более общий способ, POSIXly, используйте параметр -P
для df :
df -P | .... | awk '{print $5}'
Вы можете использовать регулярное выражение для сопоставления числа%:
df -k | grep -E ' /run$' | grep -Eo '[0-9]+%'
Некоторые пояснения.
df -k
Не требует пояснений: отображается таблица свободных мест на диске
grep -E '/ var $'
Используйте расширенный механизм регулярных выражений с grep
, чтобы сопоставить / var
mountponit
Регулярное выражение / var $
привязывает шаблон к концу строки, поэтому он не соответствует никаким / var / run
, / var / tmp
, что может сделать простой grep var
. Также обратите внимание на пробел перед косой чертой.
grep -Eo '[0-9] +%'
-E
включит регулярное выражение PCRE в Grep -o
будет печатать только соответствующую строку Регулярное выражение довольно просто:
[0-9]
соответствует любой цифре +
означает соответствует хотя бы одной цифре %
соответствует %
char ] Пример вывода:
$ df -k | grep -E ' /var$' | grep -Eo '[0-9]+%'
1%
Хорошая часть состоит в том, что не имеет значения, в какой позиции находится Use%.
Если ваш grep поддерживает регулярные выражения PCRE (например, Mac OSX не поддерживает), вы можете использовать одно регулярное выражение:
df -h | grep -Po '[0-9]+%(?= /var$)'
Здесь используется регулярное выражение Perl, а для привязки к шаблону используется «взгляд назад» / var $
и соответствовать регулярному выражению.
Если вам интересно, вы можете прочитать что-нибудь об этой функции в в этом руководстве .
Вот элегантное решение, которое вам нужно:
Если вам нужен только /var, тогда
df --output=pcent /var
Если вы хотите использовать grep
df --output=source,pcent | grep var
Или вы можете использовать позиционный формат, в котором пятое поле всегда Использовать%
df -k --portability | grep var | awk '{print $5}'