Notepad++ Search And Replace Multiple Text Lines

自古美人都是妖i 提交于 2019-12-20 06:03:20

问题


I have thousands of these in many different rules rules

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 

i want it to collect all set service lines into one line to be like this example

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"

回答1:


Here is a notepad++ only solution. It is using macros, because you say you have many different rule files.

  1. Macro -> Start Recording, now everything is recorded to a macro
    1. First Replace to mark the start of a set service block:
      • Press Ctrl-Pos1, to go to the beginnig of current file.
      • Search -> Replace...:
        Find What: ^(?!set service).+?\r\nset service
        Replace With: \1first set service\3 check Regular Expression in the lower left
      • Press Replace All
    2. Second Replace to join a set service block with the starting line:
      • Press Ctrl-Pos1, to go to the beginnig of current file.
      • Search -> Replace...:
        Find What: \r\nset service
        Replace With: `` (nothing) check Extended in the lower left
      • Press Replace All
    3. Third Replace to remove the tag in the starting line:
      • Press Ctrl-Pos1, to go to the beginnig of current file.
      • Search -> Replace...:
        Find What: ^first set service
        Replace With: set service check Regular Expression in the lower left
      • Press Replace All
  2. Macro -> Stop Recording
  3. Macro -> Save Current Recorded Macro, give it a name and create a keyboard shortcut for it.
  4. Test the Macro. If it works, continue, else delete it and restart recording.

Now you can open all your rule files and apply the Macro to each file. If you need to delete the macro, you find it under Macro -> Modify Shortcut/Delete Macro.

Edit: here is a screenshot to debug the problems with the zero matches you write about in the comments: , please note the marked sections:

  • \r\n in the Find expression
  • Dos\Windows as lineending type in the status bar
  • Regular expression is checked in the lower left
  • the region that is matched by the search in the file area

The number of lines have to be modified:

The result of suggested search Regex:



来源:https://stackoverflow.com/questions/34476116/notepad-search-and-replace-multiple-text-lines

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!