[英]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序列。
與其使用“ 復制書簽”行 ,不如使用“ 刪除未標記的行” ,然后僅將所需的行留在緩沖區中,這可能是合適的。 這樣就不需要“ Copy
和Paste
命令,並且可以在初始緩沖區中進行最終的搜索和替換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.