Я хочу, чтобы на выходе ниже хватало все имена томов, размер которых превышал 85%. Я знаю, что в этом нет ни одного примера, но давайте притвориться, что есть. :)
Filesystem total used avail capacity Mounted on
/vol/mc3240a/ 190GB 18GB 171GB 10% /vol/mc3240a/
/vol/mc3240a/.snapshot 10GB 355MB 9884MB 3% /vol/mc3240a/.snapshot
/vol/mc3240b_root_backup/ 210GB 9019MB 201GB 4% /vol/mc3240b_root_backup/
/vol/mc3240b_root_backup/.snapshot 0MB 1691MB 0MB ---% /vol/mc3240b_root_backup/.snapshot
Попробуйте это (поместите его в скрипт, сделайте его исполняемым):
#!/bin/bash
DF_BIN='/bin/df'
DF_OUT=`${DF_BIN}`
tring='first line
second line
third line'
oldIFS="$IFS" # store old IFS value
IFS='
'
IFS=${IFS:0:1} # tab formatting
lines=( $DF_OUT )
IFS=', '
COUNTER=0
for line in "${lines[@]}"
do
if [ $COUNTER -gt 0 ]; then # strip first line
fields=( $line )
if [[ ${fields[4]} =~ (8[5-9]|[9][0-9]|100)%$ ]]; then
echo "==> $line"
fi
fi
let COUNTER=COUNTER+1
done
IFS="$oldIFS"
exit 0
Не так коротка, как ответы выше, но он ловит 85% до 100% в правой строке ... [ ! d1]
или: SHORT one-line:
df -hx tmpfs -x devtmpfs | egrep '(8[5-9]|9[0-9]|100)%'
(отредактированная версия Wilfs), как и решение другого, но используя egrep с альтернативами)
Как и другие, но в скрипте, чтобы убедиться, что все это схвачено:
#!/bin/bash
#For 85% to 89%, and 95& to 99%
df -hx tmpfs -x devtmpfs | egrep '[8-9][5-9]%'
#To find if anything is 90%-94%
df -hx tmpfs -x devtmpfs | egrep '9[0-4]%'
#To find if anything is 100%
df -hx tmpfs -x devtmpfs | egrep '100%'
Отфильтрован вход для образца (tmpfs и т. д.):
wilf@comp:~$ df -hx tmpfs -x devtmpfs
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 96G 21G 71G 23% /
/dev/sda3 58G 43G 12G 79% /home
/dev/sda5 357G 335G 4.2G 99% /run/media/wilf/Storage
/dev/sda6 27G 19G 6.8G 74% /run/media/wilf/433b971a
[d2 ] Пример вывода - с именем диска с другим материалом, поскольку я не отфильтровал это: wilf@comp:~$ ./testScript
/dev/sda5 357G 335G 4.2G 99% /run/media/wilf/Storage
Основанный на @wolfgang, он должен распечатать только имя диска без /vol:
df -hx tmpfs -x devtmpfs | egrep '(8[5-9]|9[0-9]|100)%' | cut -f 1 -d " " | sed -e 's/\/vol\///g'
Предположим, что вы используете команду say xyz, чтобы получить этот вывод, тогда
xyz | grep "[8-9][5-9]%"
должен дать вам правильный вывод