もくじ
📝 はじめに
PowerShellで文字列を扱っていると、
「特定の文字を別の文字に置き換えたい」
「ログやファイル名の一部をまとめて変更したい」
といった場面はよくあります。
そんなときに使うのが
-replace 演算子です。
この記事では、PowerShellで文字列を置換する基本的な使い方から、
正規表現を使った応用までを、実務目線で分かりやすく解説します。
- 文字列の一部を別の表現に変更したい
- ログの表記ゆれをまとめたい
- ファイル名・パスを加工したい
✅ このコマンドでできること(要点)
- 文字列の一部を別の文字列に置換できる
- 正規表現を使った柔軟な置換が可能
- 結果は新しい文字列として返る
- Where-Object や ForEach-Object と組み合わせやすい
✅ -replace でできること
-replace は、
左側の文字列に対して、
右側で指定したパターンを検索し、
指定した文字列に置き換える演算子です。
単純な文字の置換だけでなく、
正規表現を使って条件に合う部分だけを
まとめて変換できるのが特徴です。
🧩 基本構文
"文字列" -replace "検索パターン", "置換後の文字列"
検索パターンには正規表現を指定できます。
▶ 基本的な使い方(まずこれだけ)
🔹 文字列を単純に置き換える
"PowerShell is fun" -replace "fun", "useful"
指定した文字列が置き換えられて表示されます。
元の文字列は変更されません。
🔹 複数箇所をまとめて置換する
"test-test-test" -replace "test", "sample"
一致したすべての箇所が置換されます。
🛠 よく使われる指定例
🔹 大文字・小文字を区別せず置換する
"ERROR error Error" -replace "error", "WARN"
-replace は
デフォルトで大文字・小文字を区別しません。
🔹 数字を別の文字に置き換える
"file123.txt" -replace "\d+", "XXX"
数字部分だけがまとめて置換されます。
💼 実務でよく使う使用例(応用)
🔹 ログの表記を統一する
Get-Content log.txt |
ForEach-Object {
$_ -replace "error", "ERROR"
}
表記ゆれを統一した内容として処理できます。
🔹 ファイル名から特定文字を除去する
Get-ChildItem |
ForEach-Object {
$_.Name -replace "\s+", "_"
}
スペースをアンダースコアに置換できます。
- ForEach-Object で1行ずつ置換
- Where-Object で対象を絞ってから置換
- Out-File で結果を保存
🧩 よくある勘違い・つまずきポイント
- 元の文字列が直接変更されるわけではない
- 検索パターンは正規表現として扱われる
- 完全一致ではなく部分一致が基本
- 特殊文字はエスケープが必要な場合がある
- 戻り値は置換後の文字列である
🔄 cmdとの違いについて
cmd では文字列置換を行うには
set や
for を使った
少し複雑な記述が必要になります。
PowerShell の -replace は、
1行で直感的に書ける点が大きな違いです。
⚠ エラー・うまく動かないときの確認ポイント
- 正規表現の記号が正しいか
- 置換後の文字列が空になっていないか
- クォートの種類が合っているか
- 想定外の部分まで置換されていないか
🧠 注意点
-replace は強力ですが、
正規表現を使いすぎると可読性が下がります。
実務では「誰が見ても分かる置換」を意識すると安心です。
📌 まとめ
- -replace は文字列を置換するための演算子
- 正規表現により柔軟な変換が可能
- 元の文字列は変更されず、新しい文字列が返る
- 次は -match や -split と組み合わせると理解が深まる
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探せます。
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- 文字列を置換したい
- 正規表現で文字を変換したい
