@taaadm

Непростая задача для vim?

В конфиг pf мне надо вставить строку с адресами сетей от 192.168.101.0/24 до 192.168.125.0/24 разделенные запятой.
Можно ли такое сделать используя только vi (vim)? Ну или одно строчной составной командой bash?

Сделать в ручную, сгенерить строку скриптом, используя excel и т.д не предлагать :)
  • Вопрос задан
  • 370 просмотров
Решения вопроса 1
sim3x
@sim3x
$ for n in {101..125}; do echo -n 192.168.$n.0/24, ; done


192.168.101.0/24,192.168.102.0/24,192.168.103.0/24,192.168.104.0/24,192.168.105.0/24,192.168.106.0/24,192.168.107.0/24,192.168.108.0/24,192.168.109.0/24,192.168.110.0/24,192.168.111.0/24,192.168.112.0/24,192.168.113.0/24,192.168.114.0/24,192.168.115.0/24,192.168.116.0/24,192.168.117.0/24,192.168.118.0/24,192.168.119.0/24,192.168.120.0/24,192.168.121.0/24,192.168.122.0/24,192.168.123.0/24,192.168.124.0/24,192.168.125.0/24,
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@abcd0x00
В Emacs'е элементарно делается.

Вставляешь начальную строку, переходишь на следующую строку и включаешь запись макроса.

Записываешь макрос:
1. вставить строку
2. перейти на три слова влево
3. выделить слово
4. запустить встроенный калькулятор с нулевым аргументом
5. добавить единицу
6. выключить калькулятор
7. вернуться в начало строки
8. выделить строку до конца
9. скопировать строку
10. перейти на следующую строку

Потом запускаешь этот макрос и он пишет каждый раз по новой строке. Когда доходишь до 125, останавливаешься и переходишь на последнюю строку.
Потом просто склеиваешь строки через пробел до самого верха.
Потом просто заменяешь пробелы на запятые до конца буфера.

У меня это всё занимает 20 секунд (если не спешить) от вставки первой строки до получения конечного списка.

В Vim'е, наверное, тоже всё это есть. Лучше приучиться к макросам, потому что это тут повезло, что скрипт можно легко написать, так как строки не сильно отличаются. А бывает так, что нужно выделить какие-нибудь части из html-исходника, которые не всегда точно определены.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы