[英]Powershell replace in file multiple times
我在一個配置文件中遵循了8-9次這樣的要求。
ProxyPass http://servername.de.domain:randomport/randomword
我建立了以下正則表達式:
(?:ProxyPass)[[:blank:]](?=http)(.*)(?=:)
我要編輯的部分是服務器名和域...我得到了與我的正則表達式匹配的內容,但是我沒有使powershell命令起作用。 我堅決:
(Get-Content $file) -replace $regexProxyPass1, " ProxyPass http://$serverName.$domain" | Set-Content $file
.NET正則表達式不支持POSIX字符類。 [[:blank:]]
應該替換為\\s
。
請參閱完整的正則表達式替換代碼段:
PS> $domain = 'mydomain'
PS> $serverName = 'myservername'
PS> $s = 'ProxyPass http://servername.de.domain:randomport/randomword'
PS> $s -replace '(ProxyPass\s+http://)[^:]+', "`$1$serverName.$domain"
ProxyPass http://myservername.mydomain:randomport/randomword
細節
(ProxyPass\\s+http://)
-組1: ProxyPass
,1+空格, http://
[^:]+
-以外的1個或多個字符:
請參閱.NET regex演示 。
替換模式中的$1
代表捕獲到組1中的值。注意轉義- `$1
這是必需的,因為雙引號文字可能包含外推變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.