ファイル内の文字列を置換する (正規表現含む)

ファイル内の文字列を置換するコマンドです。

c:\temp\test.txt にファイルがあり内容は以下の通りとます。

it is a big apple.

i like apple

これを置きかえます。

Powershell

置換は コマンドレット ではなく -replace 演算子を使用する。

コマンド:


$(Get-Content "c:\temp\test.txt") -replace "apple","orange"



結果を置き換えたい場合は、一度変数に可能してから出力します。

コマンド:


$file_contents = $(Get-Content "c:\temp\test.txt") -replace "apple","orange" 

$file_contents > "c:\temp\test.txt"



正規表現で置換

コマンド:


$file_contents = Get-Content c:\temp\test.txt

$expression = "a[a-z]{3,3}e"

$result = "orange"

[System.Text.Regularexpressions.Regex]::Replace(([string]::Join("`n", $file_contents)), $expression, $result, "Singleline")



cygwin

cygwinとはWindows環境で Unix ライクなコマンドを使用するフリーソフトです。

cygwin をダウンロードする

コマンド:


c:\cygwin\bin\sed.exe 's/apple/orange/g' c:\temp\test.txt



コマンド:


c:\cygwin\bin\sed.exe -r 's/a[a-z]{3,3}e/orange/g' c:\temp\test.txt



コマンドサンプル一覧