Хорошо, вот один (очень запутанный) способ сделать это:
pax> export ip=10.110.11.116
pax> for i in $(echo ${ip} | tr '.' ' '); do echo "obase=2 ; $i" | bc; done
| awk '{printf ".%08d", $1}' | cut -c2-
00001010.01101110.00001011.01110100
Оператор echo/tr
дает вам разделенный пробелами список октетов, а for
обрабатывает их по одномувремя.
Для каждого вы передаете его через bc
с выходной базой, установленной на 2 (двоичный).Эти четыре строки двоичных чисел переменной длины затем проходят через awk
, чтобы привести их к размеру 8, помещают их обратно в одну строку и перед каждой из них .
, а последний cut
просто удаляет первый .
.
Я почти уверен, что есть лучшие способы сделать это, конечно, но это показывает, что вы можете сделать с немного изобретательности и слишком много десятилетий, потраченных на игру с UNIX: -)