WindowsPowerShell

PowerShellの文字列操作と正規表現【-match・-replace・Select-String完全解説】

WindowsPowerShell
記事内に広告が含まれています。

PowerShellの文字列操作と正規表現は、ログ解析・テキスト処理・設定ファイル操作で必須のスキルです。

文字列操作メソッド

$text = "  Hello, PowerShell World!  "

# トリム
$text.Trim()           # 前後の空白を除去
$text.TrimStart()      # 前の空白を除去
$text.TrimEnd()        # 後の空白を除去

# 検索・置換
$text.IndexOf("PowerShell")      # 位置を返す(8)
$text.Replace("World", "Japan")  # 置換

# 分割・結合
$csv = "a,b,c,d"
$arr = $csv.Split(",")            # @("a","b","c","d")
$joined = $arr -join " - "       # "a - b - c - d"

# 書式設定
$name = "Taro"; $age = 25
"名前: {0}, 年齢: {1}歳" -f $name, $age

# 部分文字列
$str = "PowerShell"
$str.Substring(0, 5)    # Power
$str[-5..-1] -join ""   # Shell(末尾から5文字)

正規表現(-match・-replace)

# -match:マッチすると$Matchesに結果が格納される
$log = "2026-04-23 ERROR: Connection timeout (code=500)"
if ($log -match "(\d{4}-\d{2}-\d{2}).*?(ERROR|WARN|INFO).*?code=(\d+)") {
    Write-Host "日付: $($Matches[1])"
    Write-Host "レベル: $($Matches[2])"
    Write-Host "コード: $($Matches[3])"
}

# -replace:正規表現で置換
$phone = "090-1234-5678"
$masked = $phone -replace "(\d{3})-(\d{4})-(\d{4})", '$1-****-****'
Write-Host $masked  # 090-****-****

# IPアドレスを全て抽出
$text = "ホスト1: 192.168.1.1, ホスト2: 10.0.0.1"
$ips = [regex]::Matches($text, "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")
$ips | ForEach-Object { Write-Host $_.Value }

Select-String(grepのPowerShell版)

# ファイルからパターンに一致する行を検索
Select-String -Path C:\logs\*.log -Pattern "ERROR"
Select-String -Path C:\logs\app.log -Pattern "timeout" -CaseSensitive

# 結果からファイル名・行番号・内容を取得
Select-String -Path C:\logs\*.log -Pattern "CRITICAL" |
    ForEach-Object {
        Write-Host "$($_.Filename):$($_.LineNumber): $($_.Line)"
    }

# 正規表現で複数パターン
Select-String -Path app.log -Pattern "ERROR|WARN|CRITICAL"

ログ解析でSelect-Stringを使い始めると、Linuxのgrepと同等のことがWindows上でもできると実感します。特に-Patternで正規表現が使えるのと、結果オブジェクトからFilename・LineNumber・Lineを取り出せるのが便利です。

hobbyshift管理人

まとめ

  • Split・Join・Replace・SubstringなどC#と同じ文字列メソッドが使える
  • -matchは正規表現マッチで$Matchesにキャプチャグループが格納される
  • -replaceは正規表現置換、$1・$2でキャプチャグループを参照できる
  • Select-StringはLinuxのgrepに相当し、ファイル検索・ログ解析に威力を発揮する

コメント

タイトルとURLをコピーしました