2013-04-18 51 views
0

以下代碼有效,但會替換它找到的所有文本。有沒有辦法只取代第一次發生。我已經嘗試了4天的一切。使用Powershell腳本替換給定輸入中文本的第一次出現

請幫忙。

cls 
$fileName = "c:\test\bmsbackuplog.htm" 
$findstring=Select-string $fileName -Pattern "The backup of volume system reserved" -list 
$replacement = "<tr><td>Change using this line</td></tr>"  
$firstdata=$findstring[0].Line 
$both="$firstdata$replacement" 
$match ="The backup of volume system reserved*.*" 
(Get-Content ($fileName)) -replace $match,$both | Set-Content "c:\test\bmsbackuplog.htm" 

回答

0

我會用零寬度負回顧後發斷言爲:

$fileName = "c:\test\bmsbackuplog.htm" 
$pattern = 'The backup of volume system reserved' 
$replacement = '$1<tr><td>Change using this line</td></tr>' 
[io.file]::ReadAllText($fileName) -replace "(?<!$pattern[\s\S]*)($pattern)", $replacement 
+0

但百通找出兩個確切相同的條目,我需要能夠只使用第一個替換不能同時使用。我不明白上述會有什麼幫助。不管怎麼說,多謝拉。 – user2293327 2013-04-18 22:14:55

+0

你有沒有試過...?我在發佈之前測試過它。不,它不會找到兩次相同的東西。負向後視將確保圖案不存在之前,因此 - 它將只匹配第一次出現。 – BartekB 2013-04-19 02:55:48

相關問題