Я хотел бы, чтобы метод получил использование диска конкретного раздела, при помощи каталога, где раздел смонтирован. Вывод должен просто быть целым числом без дополнения или после символов, поскольку я хотел бы сохранить его в переменной.
Я использовал df --output=pcent /mount/point
, но должен обрезать вывод, поскольку он имеет ненужный заголовок, одиночный пробел, дополняющий перед значением и символом % после значения как так:
Use%
83%
В этом случае вывод, который я хотел бы, просто будет 83
. Я не знаю ни о каких недостатках к использованию вывода df
, но радо принять другие методы, которые не полагаются на него.
Я использовал бы...
df --output=pcent /mount/point | tr -dc '0-9'
Не уверенный, если sed быстрее, но я никогда не могу помнить значения sed.
Вот awk решение:
$ df --output=pcent /mnt/HDD | awk -F'%' 'NR==2{print $1}'
37
В основном, что происходит, вот то, что мы рассматриваем символ '%' как разделителя полей (разделитель столбца) и печатаем первый столбец 1$ только, когда количество записей равняется два (NR==2
часть)
, Если бы мы хотели использовать bash
- только инструменты, то мы могли бы сделать что-то вроде этого:
bash-4.3$ df --output=pcent / | while IFS= read -r line; do
> ((c++));
> [ $c -eq 2 ] && echo "${line%\%*}" ;
> done
74
И для забавы, альтернатива sed
через группу получения и -r
для расширенного regex:
df --output=pcent | sed -nr '/[[:digit:]]/{s/[[:space:]]+([[:digit:]]+)%/\1/;p}'
Можно передать по каналу к grep
, который просто извлекает цифры:
df --output=pcent /mount/point | grep -o '[0-9]*'
Посмотрите, что он живет:
$ echo "Use%
> 83%" | grep -o '[0-9]*'
83
sed
решение
df --output=pcent /mount/point | sed '1d;s/^ //;s/%//'
1d
удаляет первую строку ;
для разделения, команды s/^ //
удаляют пространство из запуска строк s/%//
, удаляют %
знак тустепа Bash был своего рода удар (Перенесенный Снова Оболочка) вентилятор в прошлом году, я думал, что предложу решение с помощью него.
$ DF_PCT=$(df --output=pcent /mnt/d)
$ echo ${DF_PCT//[!0-9]/}
5
df
вывод к переменной DF_PCT
. DF_PCT
и отображает ее на экране. 5
в этом случае) будет сгенерирован. Вот другое решение:
df | grep /mount/point | awk '{ print $5 }' | cut -d'%' -f1
Я натолкнулся на сервер, где - output=pcent еще не был реализован, таким образом, я использовал нормальный вывод, фильтрованный столбцом, сопровождаемым regex: df /mount/point | awk '{print $5}' | tr -dc '0-9'