簡體   English   中英

Powershell多次替換文件

[英]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.

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