как соответствовать числу % от df-k команда

[1122114] Вы можете поместить [1122464] чтение [1122465] и ваш [1122466] случай [1122467] в [1122468], в то время как [1122469] цикл и [1122470] вырвать [1122471] из него, когда условие выполнено:[12133] [1122472] в то время как : ; do ... done[1122473] представляет собой бесконечный цикл. [1122474]break[1122475] выходит из [1122476] для [1122477], [1122478] в то время как [1122479], или [1122480] до [1122481] цикла. Используйте [1122482] break[1122483] для выхода, если ответ [1122484]y[1122485] или [1122486]n[1122487], иначе цикл продолжится.[1122117].
1
22.09.2014, 20:52
4 ответа

Как насчет чистого решения Grep?

df -k | grep var | grep -o '[0-9]*%'

Вы можете присоединиться к этим двум грепсам с помощью небольшой помощи Perl Regexp:

df -k | grep -Po 'var.* \K[0-9]*%'
2
27.01.2020, 23:20

Вы можете использовать:

.... | awk '{print $(NF-1)}'

Это может вызвать печать заголовка вывода df , если он содержит шаблон grep . Чтобы избежать этого, вы можете:

.... | awk '$(NF-1) ~ /%/'

Более общий способ, POSIXly, используйте параметр -P для df :

df -P | .... | awk '{print $5}'
0
27.01.2020, 23:20

Вы можете использовать регулярное выражение для сопоставления числа%:

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 $ и соответствовать регулярному выражению. Если вам интересно, вы можете прочитать что-нибудь об этой функции в в этом руководстве .

1
27.01.2020, 23:20

Вот элегантное решение, которое вам нужно:

Если вам нужен только /var, тогда

df --output=pcent /var

Если вы хотите использовать grep

df --output=source,pcent | grep var

Или вы можете использовать позиционный формат, в котором пятое поле всегда Использовать%

df -k --portability | grep var | awk '{print $5}'
1
27.01.2020, 23:20

Теги

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