[登録されているタグ]

[記事公開日]2025/12/20

PowerShellで文字列を置換する|-replace の使い方

📝 はじめに

PowerShellで文字列を扱っていると、
「特定の文字を別の文字に置き換えたい」
「ログやファイル名の一部をまとめて変更したい」
といった場面はよくあります。

そんなときに使うのが
-replace 演算子です。
この記事では、PowerShellで文字列を置換する基本的な使い方から、
正規表現を使った応用までを、実務目線で分かりやすく解説します。

こんな場面で便利

  • 文字列の一部を別の表現に変更したい
  • ログの表記ゆれをまとめたい
  • ファイル名・パスを加工したい

✅ このコマンドでできること(要点)

  • 文字列の一部を別の文字列に置換できる
  • 正規表現を使った柔軟な置換が可能
  • 結果は新しい文字列として返る
  • Where-ObjectForEach-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コマンドを探す

やりたいことからコマンドを探せます。

  • ファイルを削除したい
  • 一覧を表示したい
  • 文字列を検索したい
  • 条件で絞り込みたい
  • エラーや実行できない原因を調べたい
  • 文字列を置換したい
  • 正規表現で文字を変換したい
Generic filters
すべてを開く | すべてを閉じる

ページ上部へ戻る