はじめに
じつはgrepもsedも使いこなしていないので、代替になるかどうかは分からないけど、正規表現での検索と置換を実装してみた。
grep/sed コマンドの代替としての StreamRelay.NET.exe
ver3.8.0.0 より、.NET Framework標準の正規表現機能(System.Text.RegularExpressionsクラス)をスクリプト実装のプラグインの一つとして実装した。
オプションとしては「-RegularExpressionMatch」と「-RegularExpressionReplace」がそれである。
使用上の注意(入出力ストリームの文字列化(Byte配列からChar配列へ))
正規表現なので、ストリームからの入力データを文字列として扱う「-LocalCharset」などのオプションがないと面白い結果は出ないと思う。
「-RegularExpressionMatch」オプション
-RegularExpressionMatch 正規表現
というような正規表現のオプションを一つ受けて、それにヒットした行だけを通過させる。
例えば、
C:\>type abc.txt
abc
123
aabc
C:\>StreamRelay.NET.exe -LocalPort 0 -RemotePort 0 -LocalCharset SHIFT_JIS -LocalInputFile abc.txt -RegularExpressionMatch aa+
aabc
「-RegularExpressionReplace」オプション
-RegularExpressionReplace 正規表現 置換文字列
というような正規表現と置換文字列のオプションを2つ受けて、それにヒットした部分を置換して通過させる。
例えば、
C:\>type abc.txt
abc
123
aabc
C:\>StreamRelay.NET.exe -LocalPort 0 -RemotePort 0 -LocalCharset SHIFT_JIS -LocalInputFile abc.txt -RegularExpressionReplace "(a+)" "zz**$1**zz"
zz**a**zzbc
123
zz**aa**zzbc
正規表現のリファレンス
.NET Framework標準のリファレンスは「正規表現言語 - クイック リファレンス」