Арифметика по переменной, содержащей ip-адрес

У меня переменная

network="198.168.1.x" # for ex. 198.168.1.254 

Я хочу создать новые переменные:

 next_serv="198.168.1.(x-1)" # for ex. 198.168.1.253 max_host="198.168.1.(x-2)" # for ex. 198.168.1.252 

Как это сделать?

3 Solutions collect form web for “Арифметика по переменной, содержащей ip-адрес”

Легкий способ состоит в том, чтобы разделить значение на «.». маркеров и выполнить арифметику, снова сведя результат.

С awk (который обрабатывает разделители и т. Д.):

 this_serv=192.168.1.100 next_serv=$(echo $this_serv | awk -F. '{printf "%d.%d.%d.%d", $1,$2,$3,$4-1}') 
 network="198.168.1.254" IFS="." read -rabcd <<< "$network" next_serv="$a.$b.$c.$(($d-1))" echo "$next_serv" 

Вывод:

 198.168.1.253

Использование расширения параметра:

 $ network="198.168.1.254" $ next_serv="${network%.*}.$((${network##*.} - 1))" $ max_host="${network%.*}.$((${network##*.} - 2))" $ echo "$next_serv" 198.168.1.253 $ echo "$max_host" 198.168.1.252 
  • Заменяйте несколько строк за один проход
  • удалить строки в файле csv старше 7 дней
  • Как получить последнее вхождение строк между двумя шаблонами из файла?
  • Есть ли разница в использовании труб?
  • Самый быстрый инструмент `uniq` в linux
  • sed regex не работает
  • команда sed не заменяет текст символом новой строки
  • sed / awk / grep найти строку между точкой с запятой
  • Получение подстрок между разделителями несколько раз из одной строки без цикла
  • Удаление лишних пробелов, но не новая строка из csv-файлов
  • База данных библиотек
  • Interesting Posts

    Очень большое время ожидания ввода-вывода на виртуальной машине KVM

    Проблема с трубами. Труба прекращается, когда читатель делает

    неправильный тип fs, неправильная опция, плохой суперблок при попытке монтировать восстановленный том

    Есть ли способ ограничить объем памяти, который может использовать конкретный процесс в Unix?

    Процесс не закрывается на сломанной трубе

    Как выполнить автоматическое назначение параметров в соответствии с шаблоном имени файла?

    Где пользователи cronjob

    В чем разница между / tmp и / run?

    Где искать проблемы при входе через ssh

    Автоматически копировать определенную папку с каждой удаленной машины на главную машину

    Безмоментный запуск задачи в фоновом режиме

    Как написать сценарий bash, который регистрируется на другой машине, чтобы делать что-то?

    Как каталог является «особым типом файла»?

    Не удается открыть общую папку в Debian (VirtualBox)

    Имеет ли смысл использовать журналирующее FS на образ файловой системы, который хранится в файловой системе, которая уже предоставляет журналирование?

    Linux и Unix - лучшая ОС в мире.