Да, звучит как отличный матч для printf
. Вероятно, вы можете использовать cut
, чтобы разбить входящий адрес на поля, которые затем можно будет передать обратно в printf
для форматирования.
Вот быстрый набросок, который, безусловно, можно улучшить, чтобы получить точный выходной формат, который вам требуется:
#!/usr/bin/env bash
function format_address()
{
printf "%03d.%03d.%03d.%03d.%05d" $(echo $1 | cut -d'.' --output-delimiter=' ' -f1-5)
}
for a in $(echo $1 | tr -d ':' | cut -d '-' --output-delimiter=' ' -f1,2)
do
format_address $a
done