2015-12-26 5 views
0

У меня есть тысячи из них во многих различных правил правилNotepad ++ Поиск и замена нескольких строк текста

edit 1698 

set src-address "172.29.44.51/32" 

set dst-address "172.29.44.67/32" 

set service "tcp-1022" 

set service "tcp-1023" 

set service "tcp-1090" 

set service "tcp-1098-1102" 

set service "tcp-115" 

set service "tcp-123" 

set service "tcp-13000" 

set service "tcp-13001" 

set service "tcp-14000" 

set service "tcp-14001" 

set service "tcp-15000" 

set service "tcp-16000" 

set service "tcp-1812" 

set service "tcp-22" 

set service "tcp-32770-32900" 

set service "tcp-3307" 

set service "tcp-3528" 

set service "tcp-3600" 

set service "tcp-4400-4500" 

set service "tcp-4712-4715" 

set service "tcp-5000" 

set service "tcp-5000-5630" 

set service "tcp-50023-50030" 

set service "tcp-5632-7000" 

set service "tcp-636" 

set service "tcp-7500" 

set service "tcp-7600" 

set service "tcp-7650" 

set service "tcp-7651" 

set service "tcp-7900" 

set service "tcp-8009" 

set service "tcp-8093" 

set service "tcp-8443" 

set service "tcp-9000" 

set service "tcp-9001" 

set service "udp-1023" 

set service "udp-1102" 

set service "udp-123" 

set service "udp-13001" 

set service "udp-14000" 

set service "udp-14000-14001" 

set service "udp-161" 

set service "udp-162" 

set service "udp-177" 

set service "udp-22" 

set service "udp-389" 

set service "udp-45600-45800" 

set service "udp-5900" 

set service "udp-7500" 

set service "udp-8443" 

set service "udp-9001" 

set service "udp-920-940" 

exit 

я хочу, чтобы собрать все линии набор услуг в одну линию, чтобы быть как в этом примере

set service "PING" "tcp-1022" "tcp-1023" "tcp-1090" "tcp-1098-1102" "tcp-115" "tcp-123" "tcp-13000" "tcp-13001" "tcp-14000" "tcp-14001" "tcp-15000" "tcp-16000" "tcp-1812" "tcp-22" "tcp-32770-32900" "tcp-3307" "tcp-3528" "tcp-3600" "tcp-4400-4500" "tcp-4712-4715" "tcp-5000" "tcp-5000-5630" "tcp-50023-50030" "tcp-5632-7000" "tcp-636" "tcp-7500" "tcp-7600" "tcp-7650" "tcp-7651" "tcp-7900" "tcp-8009" "tcp-8093" "tcp-8443" "tcp-9000" "tcp-9001" "udp-1023" "udp-1102" "udp-123" "udp-13001" "udp-14000" "udp-14000-14001" "udp-161" "udp-162" "udp-177" "udp-22" "udp-389" "udp-45600-45800" "udp-5900" "udp-7500" "udp-8443" "udp-9001" "udp-920-940" 

ответ

0

Вот решение для блокнота ++. Он использует макросы, потому что вы говорите, что у вас много разных файлов правил.

  1. Macro -> Начать запись, теперь все записывается в макро
    1. Первая замена, чтобы отметить начало блока набор услуг:
      • Нажмите Ctrl-Pos1, чтобы перейти к beginnig текущего файла.
      • Поиск -> Заменить ...:
        Найти Что: ^(?!set service).+?\r\nset service
        Заменить: \1first set service\3 проверка регулярных выражений в нижнем левом углу
      • Нажмите Заменить все
    2. Во-вторых Заменить, чтобы соединить набор служебных блоков с начальной строкой:
      • Нажмите Ctrl-Pos1, чтобы перейти к началу текущего файла.
      • Поиск -> Заменить ...:
        Найти Что: \r\nset service
        Заменить: `` (ничего) проверки Extended в нижнем левом
      • Нажмите Заменить все
    3. Третий замените, чтобы удалить бирку в стартовой строке:
      • Нажмите Ctrl-Pos1, чтобы перейти к началу текущего файла.
      • Поиск -> Заменить ...:
        Найти Что: ^first set service
        Заменить: set service проверка регулярных выражений в нижнем левом углу
      • Нажмите Заменить все
  2. Макро -> Остановка записи
  3. Macro -> Сохранить текущий записанный макрос, присвоить ему имя и создать для него комбинацию клавиш.
  4. Проверьте макрос. Если он работает, продолжайте, а затем удалите его и перезапустите запись.

Теперь вы можете открыть все свои файлы правил и применить макрос к каждому файлу. Если вам нужно удалить макрос, вы найдете его под Макро -> Изменить ярлык/Удалить макрос.

Edit: вот скриншот для отладки проблем с нуля матчей вы писать в комментариях: screenshot with a part of the regexp, обратите внимание на выделенные разделы:

  • \r\n в Найти выражение
  • Dos \ Windows в качестве типа линий в строке состояния
  • Регулярное выражение проверяется в левом нижнем углу
  • регион, который соответствует поиску в области файлов

Число линий должны быть изменены:

The number of lines have to be modified

Результат предложил поиска Regex:

The result of suggested search Regex

+0

я пробовал, но как только я нажимаю замените все, что он дает мне "заменить все: 0 occistence были заменены" – Sentoki

+0

That означает, что поиск не работает. Убедитесь, что вы проверили Extended в левом нижнем углу диалогового окна замены. Это гарантирует, что \ r \ n соответствует листингу Dos \ Windows. Если вы используете линименты Unix, замените \ r \ n только \ n в поиске. Notepad ++ показывает вид линий в строке состояния справа. –

+0

В вышеприведенном комментарии вы указали, что в файле есть множество наборов сервисов. Это означает, что ответ с одним макросом для каждого файла не будет работать. Я попытаюсь подумать о регулярном выражении. –

Смежные вопросы