テキストファイルを読み込み、テキストを置換するためにPowerShellを使用する方法を知りたいですか?これをPowerShell Read-Text Fileと呼んでいます。
これ以上探す必要はありません!このブログ記事がお役に立ちます。記事の最後に、あなたの生活をかなり楽にするために作成した関数を紹介します。
テキストファイル内のテキストを置換するには、PowerShellを使用することができます。これは3つのステップで行います。
- ファイルの読み込み
- 文字列の検索と置換
- 変更をファイルに書き込む
ファイルの読み込み
まず最初にファイルを読み込む必要があります。まず、Set-Content
コマンドレットを使用してファイルを作成しましょう。
このファイルを読み込むには、Get-Content
コマンドを使用します。以下のように、Path
パラメータにテキストファイルのパスを指定してファイルを読み込むことができます。
文字列の検索と置換
これで、ファイルの内容をメモリ内の文字列として持っているので、文字列を検索して置換する必要があります。その方法の1つは、-replace
演算子を使用する方法です。このPowerShellの演算子は、文字列を検索して別の文字列で置き換えます。
例のファイルの内容を使用して、検索文字列にfoo、置換文字列にbarを指定すると、ファイルの内容はfoo foo bazになります。
ファイルへの書き込み
新しいファイルの内容が$newContent
に保存されたので、この新しい内容をファイルに書き込む必要があります。その方法の一つは、Set-Content
コマンドを使用することです。
Set-Content
コマンドは、ファイルのすべての内容を新しい値に置き換えます。
このようにGet-Content
でC:\file.txtファイルを読み込むと、新しい内容が含まれていることがわかります。
開いたファイルハンドルの取り扱い
以前に行った手順は…ほとんどの場合には機能します。しかし、実際の世界では常にうまくいかないことがあります。
時々、PowerShell自体で開かれているファイルに対処しなければならないことがあることに気付くでしょう。これにより、新しい内容をファイルに書き込むことができません。
この開いたファイルハンドルの状況を解消するために、新しい内容を一時的なテキストファイルに最初に作成し、元のファイルを削除してから一時ファイルの名前を変更する簡単なワークフローを作成しました。
以下にその動作例を示します。
以下は、このアプローチとファイル内のテキストを検索(置換ではない)する機能Find-InTextFile
の例です。
この関数は、より強力な正規表現構文を使用して文字列を検索することも可能です。正規表現を使用すると、シングルクォート、特殊文字などの特殊文字を使用した柔軟な検索が可能になります。
また、下記のようにforeachループを使用して複数のファイルを一度に処理しています。これは、複数のファイルを処理する場合に便利です。
リソース
Set-Content
コマンドの詳細については、Set-Content: PowerShellでファイルに書き込む方法を参照してください。また、ファイルに内容を書き込む別の方法として、Out-File
コマンドもあります。
Source:
https://adamtheautomator.com/powershell-read-text-file/