简体   繁体   English

Notepad ++搜索并替换多行文本

[英]Notepad++ Search And Replace Multiple Text Lines

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"

Here is a notepad++ only solution. 这是仅notepad ++的解决方案。 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. 按Ctrl-Pos1转到当前文件的开头。
      • Search -> Replace...: 搜索->替换...:
        Find What : ^(?!set service).+?\\r\\nset service 查找内容^(?!set service).+?\\r\\nset service
        Replace With : \\1first set service\\3 check Regular Expression in the lower left 替换为\\1first set service\\3选中左下方的正则表达式
      • 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. 按Ctrl-Pos1转到当前文件的开头。
      • Search -> Replace...: 搜索->替换...:
        Find What : \\r\\nset service 查找内容\\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. 按Ctrl-Pos1转到当前文件的开头。
      • Search -> Replace...: 搜索->替换...:
        Find What : ^first set service 查找内容^first set service
        Replace With : set service check Regular Expression in the lower left 替换为 :在左下方set service检查正则表达式
      • 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 \\r\\n在“查找”表达式中
  • Dos\\Windows as lineending type in the status bar 在状态栏中以Dos \\ Windows作为换行符类型
  • 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 : 建议搜索正则表达式的结果

建议搜索正则表达式的结果

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM