GNU sed をWindowsで使う

2011/06/29未分類import

GNU sed をWindowsにインストールする.

sedは主にUNIX系のOSで置換操作をするのに使われるプログラムですが,
バッチファイルと連携することで,Windowsでも同様の作業を行うことができます.
ただし,自分でsedをインストールする必要があるためそこから解説します.

sed for Windowsからバイナリをダウンロードして実行してみたところ,dllがないから動かないとエラーが出ました.
このため表示されたライブラリを探していく作業を経ました.
sed-4.2+alpha.zipはライブラリを集めて,動作する状態で再圧縮をかけたものです.
バージョンは固定ですが必要に応じて利用ください(GNUライセンスなので再配布は可能なはずですのでおいておきます.).
解凍したフォルダ内のbinに実行ファイルとかき集めたライブラリがあるので,これをパスの通っている場所に置きます.
私はTeXをインストールしたフォルダに古いsed(有用なオプションが使えないバージョン)があったので,そこに上書きする形で置きました.

バッチファイルを任意のエディタで編集できるようにする

バッチファイルは使用頻度の高いテキストファイルです.
上のsedを使うにしてもバッチファイルで使うと他のプログラムと連携する場合に便利だと思われます.
ですがいざ編集をしようと右クリックメニューで編集を選択すると,
開かれるのはメモ帳というのが残念なデフォルトです.
バッチファイルを開くプログラムは,レジストリエディタ(regedit.exe)を使って変更可能です.
regeditを起動したあと,HKEY_CLASSES_ROOT→batfile→shell→edit→command
と進んで,commandの既定をダブルクリック(あるいは右クリックで修正を選択する)します.
そして,そこにあるメモ帳のパスを好きなエディタのものに変更すれば完了です*1
C:\Software\vim73-kaoriya-win32\gvim.exe "%1"
私は上のようにvimを使っています.この際,「"%1"」を「%1」とすると,
半角スペースが入ったパスのファイルが編集できないので注意が必要です.

*1 : ちなみにデフォルトは「%SystemRoot%\System32\NOTEPAD.EXE %1」でした.

バッチファイルを使って文字列の置換を行う

以下のような内容のバッチファイル"ikkatsu.bat"を作成します.
for %%A in (%1) do sed -i -e "s/てすと/#てすと/g" %%A
for %%A in (%1) do sed -i -e "s/Km/km/g" %%A
for %%A in (%1) do sed -i -e "s/,/	/g" %%A
この"ikkatsu.bat"は次のように実行することで,
拡張子がcsvのファイル内の対象文字列を一括で置換してくれます.
ikkatsu.bat *.csv
必要に応じて,内容を変更すれば,様々な要求に応えられるでしょう.