変数の複数のインスタンスをid=*
、のような特定のパターンに置き換えたいと思いますid=1234
。私はすでにこのPowershellスクリプトを作成しました(そしてソリューションとしてPowershellを使い続けることを好みます):
$line = Get-Content C:\test.txt | Select-String "id=" | Select-Object -ExpandProperty Line
$content = Get-Content C:\test.txt
$content | ForEach {$_ -replace $line,"id=1234"} | Set-Content C:\test.txt
Get-Content C:\test.txt
これは、のインスタンスが1つしかない限りid=...
、ファイルに複数のインスタンスが含まれている場合、id=...
置換手順がまったく実行されない場合に機能します。
入力ファイルは次のようなものです。
text over here
id=1
text over here: id={123456}
text
id=number1
id=#3 text
id=3+3 text
その結果、次のようになります。
text over here
id=1234
text over here: id=1234
text
id=1234
id=1234 text
id=1234 text
必要なのはid=
、空白に達するまですべての文字をキャプチャすることです。
以下は問題なく動作します
$content = Get-Content "C:test.txt" -raw
$content = $content -replace 'id=[^\s]*','id=1234'
Set-Content C:\test.txt
Get-Content C:\test.txt
-Raw
パラメータを使用すると、ファイルが配列ではなく文字列にすばやく読み込まれます。そこから、上記の置換を使用して、目的の結果が得られます。
[^\s]*
空白の文字(スペース、タブ、キャリッジリターン、ラインフィード)を含まない単一の文字を一致させることです
正規表現ステートメントを作成するときにRegexStormを使用できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加