0

次のコードは機能しますが、見つかったすべてのテキストを置き換えます。最初に出現したものだけを置き換える方法はありますか。私は今4日間すべてを試しました。

助けてください。

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"
4

1 に答える 1

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
于 2013-04-18T18:11:00.647 に答える