Исправление Zmicier, (текущая версия) :
Не слушайте всяких crutch_master’ов, и не прыгайте на всякие Перлы и прочие, а подучите лучше нормально ГНУ Баш, если уж взялись за него.
Что до задачки, то первые две (или не две) строчки в образце у вас очевидно сломаны, так что их обработку сами сделаете, а в остальном как-то так должно быть можно:
#!/bin/bash
while IFS+=':' read key val; do
case "$key" in
'*-disk')
flag=1
printf '%s' "$key"
;;
'размер')
[[ $flag ]] || continue
if [[ $val =~ ([0-9]+)(.iB).* ]]; then
printf ' %d %s\n' \
"${BASH_REMATCH[1]}" "${BASH_REMATCH[2],,}"
else
printf '\n'
fi
;;
esac
done
Не проверял. Могут быть ошибки вплоть до синтаксических.
Комментарии нужны?
Исходная версия Zmicier, :
Не слушайте всяких crutch_master’ов, и не прыгайте на всякие Перлы и прочие, а подучите лучше нормально ГНУ Баш, если уж взялись за него.
Что до задачки, то первые две строчки в образце у вас очевидно сломаны, так что их обработку сами сделаете, а в остальном как-то так должно быть можно:
#!/bin/bash
while IFS+=':' read key val; do
case "$key" in
'*-disk')
flag=1
printf '%s' "$key"
;;
'размер')
[[ $flag ]] || continue
if [[ $val =~ ([0-9]+)(.iB).* ]]; then
printf ' %d %s\n' \
"${BASH_REMATCH[1]}" "${BASH_REMATCH[2],,}"
else
printf '\n'
fi
;;
esac
done
Не проверял. Могут быть ошибки вплоть до синтаксических.
Комментарии нужны?