7

以下のパイプラインを使用してファイルを読み取り、その行を置き換えて別のファイルに保存しましたが、ターゲットファイルの文字列が置き換えられておらず、まだ古いものであることがわかりました。

元の行は:name-1a2b3c4d

新しい行は次のようになります:name-6a5e4r3h

(Get-Content "test1.xml") | ForEach-Object {$_ -replace '^name-.*$', "name-6a5e4r3h"} | Set-Content "test2.xml"

そこに何か足りないものはありますか?

4

2 に答える 2

13

見逃していることの 1 つは、-replace 演算子が配列に対して正常に機能することです。つまり、foreach-object ループはまったく必要ありません。

(Get-Content "test1.xml") -replace '^name-.*$', 'name-6a5e4r3h' | Set-Content test2.xml
于 2013-03-08T11:32:06.193 に答える
1

$_変数は変更していません。

あなたは試すかもしれません:

$lines = Get-Content $file
$len = $lines.count
for($i=0;$i-lt$len;$i++){
    $lines[$i] = $lines[$i] -replace $bad, $good
}
$lines > $outfile
于 2013-03-08T09:19:27.723 に答える