簡體   English   中英

notepad ++正則表達式查找並計數或復制

[英]notepad++ regular expression find and count or copy

我想獲取配置文件中所有出現的內容,其中第一行從“ object”開始,第二行立即以“ nat”開始

object network obj_any

 nat (inside,outside) dynamic interface

object network obj-test

 nat (DMZ1,outside) static 10.206.49.180

object network obj-192.168.236.200

 nat (DMZ1,outside) static 10.206.74.60

object network obj-192.168.236.8

 nat (DMZ1,outside) static 10.206.49.183 tcp 8080 80

object network obj-192.168.236.9

 nat (DMZ1,outside) static 10.206.49.178 tcp 1002 22

object network obj-192.168.236.10

 nat (DMZ1,outside) static 10.206.49.178 tcp 8080 80

object network obj-192.168.236.13

 nat (DMZ1,outside) static 10.206.74.58 dns

我在下面嘗試過但似乎無法正常工作

object network .+? nat .+? static .+?

並選擇“匹配新行”,但似乎不匹配

除了.*您還可以查找非換行符。
Notepad ++正則表達式搜索多行,因此^匹配每行的開頭。

正則表達式:

^(object network\s+)([^\r\n]+)[\r\n]+\s*(nat)\s+([^\r\n]+)[\r\n]+

搜索模式:

Regular expression (with or without the checkbox for dot)

額外

使用PowerShell,您可以將它們從文件中提取到新文件中。

例如,要讀取“ filein.txt”並將匹配項輸出到“ fileout.txt”:

cat -Path .\filein.txt -Raw |sls -Pattern '(?m)^object network\s+[^\r\n]+\s+nat\s+[^\r\n]+\r?\n' -AllMatches|%{$_.Matches.Value} >.\fileout.txt

我相信使用Notepad ++不能一步一步完成。 復制這些行的多步驟過程如下。

(1)找到想要的線對,並用標記字符串將它們合並為單線。 (2)用標記將所有行添加為書簽並進行復制。 (3)將需要的行粘貼到新緩沖區中,然后將標記字符串轉換回換行符。


更詳細地。

(設置)選擇一個標記字符串,該字符串不會出現在正在搜索的緩沖區或目標緩沖區中的任何位置。 對於此示例,我選擇!!!

(1)用\\\\ 1 !!! \\ 2'做一個正則表達式替換^(object.*)\\R+( nat.*)$ 這將轉換所需的行,因此問題中顯示的第一對變為:

object network obj_any!!! nat (inside,outside) dynamic interface

(2)打開搜索窗口,然后選擇“ Mark標簽。 單擊Clear all marks ,在Bookmark line打勾,在“ Find what字段中輸入標記字符串(即!!! ),然后單擊“ Mark all 選擇菜單=> 搜索 => 書簽 => 復制書簽行

(3)選擇要寫入復制行的位置,然后在復制行中Paste 做一個正則表達式搜索並替換!!! \\r\\n\\r\\n (如果您首選的行尾不是Windows,則可能需要更改替換字符串。)

筆記

上面沒有保留兩行之間CR和LF的確切順序。 第一個替換使用\\R+查找兩行之間的CR和LF的任意組合。 最后的替換插入固定的CR和LF序列。

與其使用“ 復制書簽”行 ,不如使用“ 刪除未標記的行” ,然后僅將所需的行留在緩沖區中,這可能是合適的。 這樣就不需要“ CopyPaste命令,並且可以在初始緩沖區中進行最終的搜索和替換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM