Когда я бегу
df -hl | grep '/dev/disk1' | awk '{sub(/%/, \"\");print $5}'
Я получаю следующую ошибку:
awk: syntax error at source line 1
context is
{sub(/%/, >>> \ <<< "\");}
awk: illegal statement at source line 1
Кажется, я не могу найти никакой документации по awk sub.
df -hl | grep '/dev/disk1'
возвращается
/dev/disk1 112Gi 94Gi 18Gi 85% 24672655 4649071 84% /
Как я понял, он должен возвращать процент использованного дискового пространства.
Вам просто нужно удалить пару обратных косых черт:
df -hl | grep '/dev/disk1' | awk '{sub(/%/, "");print $5}'
Awk sub
Функция хорошо документирована для замены первого вхождения шаблона, переданного в качестве первого параметра, строкой, переданной в качестве второго параметра.
Здесь шаблон - это знак процента, а строка замены - это пустая строка. Как написано в вашем вопросе, второй параметр является недопустимой строкой, поэтому awk
жалуется и уходит. Исправленный awk
заявление удаляет %
появляется в его вводе и отображает пятое поле.
Обратите внимание, что grep
команда здесь избыточна, так как awk
может выполнять только фильтрацию, поэтому команду можно упростить до:
df -hl | awk '/\/dev\/disk1/ {sub(/%/, "");print $5}'