1

行末のテキストを見つけて Powershell に置き換えようとしています。(ascii、txt、windows)文字列の置換に既に使用されている特定のスクリプトでこれを行う必要があります。

$inputText = [system.IO.File]::ReadAllText("Text.txt")

$regex = '\\DE$|\DE_02'

$regex > test.txt

$th = [system.IO.File]::ReadAllText("test.txt")

foreach($expression in $th) {

 if ($expression -eq 'EOF') { break }

 $parts = $expression.Split("|")

 if ($parts.Count -eq 2) {

     $inputText = $InputText -creplace $parts

     echo $inputText | out-file "Text_neu.txt" -enc ascii
 }
}

コマンドレットはこれまでのところ正常に動作しますが、行末 ($) と一致しません -.- $ の代わりに `r`n も試しましたが、動作しませんでした...

私がこのようにしようとすると:

$inputText = [system.IO.File]::ReadAllText("Text.txt")

$inputText.Replace("\DE\`r\`n","\DE_02\`r\`n") | Out-File Text_neu.txt

それはすべて正しく交換されています。

既存のスクリプトも機能するように変更するにはどうすればよいですか?

4

1 に答える 1

1

スクリプトを正しく理解しているかどうかはわかりませんが、問題は、単一の行ではなくテキスト全体を置き換えていることだと思います。

したがって$、行の終わりではありません(\r\n。デフォルトでは、文字列の終わりに一致します。

インライン修飾子を使用して、この動作を変更できます(?m)。これ$により、行の終わりに一致するようにの動作が変更されます。

試す

$regex = '(?m)\\DE$|\DE_02'

正規表現として。

于 2012-09-10T09:13:34.290 に答える