Как я могу напечатать диапазон IP-адресов в командной строке Linux, используя команду "seq"? Например: мне нужен seq для печати диапазона ip от 10.0.0.1 до 10.0.0.23. Похоже, что период между октетами приводит к тому, что число ведет себя как число с плавающей запятой. Я получаю "неверную ошибку аргумента с плавающей точкой". Я пытался использовать опцию -f. Может быть, я не правильно его использую. Но это все равно дало мне ошибку. Я пытаюсь что-то похожее на
seq 10.0.0.2 10.0.0.23
Есть ли другой способ печатать IP-адреса в диапазоне, отличном от Linux, кроме переключения на Excel?
linux
bash
command-line
user2476714
источник
источник
bash
этим диапазоном адресов можно распечататьecho 10.0.0.{2..23}
.{..}
Конструкция называется подстановка скобок.Ответы:
Используйте формат:
К сожалению, это неочевидно, поскольку GNU не любит писать man-страницы.
источник
info coreutils 'seq invocation'
.%g
не задокументировано; Вы должны выследить правильнуюprintf
информационную страницу.man 3 printf
также являются хорошей идеей, если читатель не знаком со строками формата printf. Тем не менее, я не большой поклонник их использования texinfo, но это было только мое предложение для улучшения вашего ответа, используя существующую документацию, просто указывая на отсутствие документации в определенном формате.Существует
prips
утилита, которая генерирует список IP-адресов из диапазона или CIDR. Полезно для работы с большими диапазонами:источник
Вы можете использовать команду sed с seq для вывода диапазона IP-адресов.
ИЛИ используя echo и tr
источник
Команда
printf
выполняет неявную итерацию, если ей дано больше аргументов, чем спецификаторов преобразования. Например:Есть два преобразования, но шесть аргументов. Таким образом, происходит три повторения логики форматирования, проходя через аргументы попарно.
С этим мы можем сделать:
Команда
printf
и ее повторяющееся поведение соответствуют стандарту POSIX : «Операнд формата должен использоваться повторно так часто, как это необходимо для удовлетворения операндов аргумента». С другой стороны,seq
команда не.источник
источник
Если мы удалим требование использовать
seq
команду и предположим, чтоipcalc
команда доступна, а команда Ubuntuprips
- нет, то онаprips
может быть реализована как функция оболочки Bash:Обратите внимание, что это будет включать сетевой адрес и широковещательный адрес в диапазоне; если это проблема, удалите первый и последний адрес из результата.
источник