У меня есть сценарий bash, где я получаю информацию об использовании диска, например 60%
. Как я могу удалить %
условное обозначение? Используете grep или awk?
Нет необходимости во внешних инструментах, таких как tr
или даже sed
поскольку bash может делать это самостоятельно с бесконечности.
percentage="60%"
number=${percentage%\%}
Этот оператор удаляет самую короткую совпадающую подстроку (в данном случае экранированную %
) с конца переменной. В bash есть и другие средства управления строками. Он даже поддерживает регулярные выражения. Как правило, большинство вещей, которые вы обычно видите, люди используют tr
, sed
, awk
или grep
for можно сделать с помощью встроенного bash. Просто он почти ничего не знает об этом и приносит большие пушки ...
Видеть http://tldp.org/LDP/abs/html/parameter-substitution.html#PSOREX1 Чтобы получить больше информации.
Вместо sed используйте tr.
tr -d '%'
sed - один из самых простых способов
sed -i 's/\%//g' fileName
Это должно сделать это:
sed 's/%//'
Проденьте струну через нее для достижения наилучших результатов.
Если использование диска указано в переменной, bash может выполнить удаление как часть подстановки переменной:
diskusagepct="60%"
echo "disk usage: ${diskusagepct%\%} percent" # prints disk usage: 60 percent
diskusagenum="${diskusagepct%\%}" # sets diskusagenum to 60