GNU grep

WindowsGNU grepを使っているわけですが、GNU grepって正規表現でタブ文字を表現できません。[:space:]ってのは空白文字なんで、タブ文字だけじゃなくて半角空白にもヒットします。
テキストでデータを扱う際に、タブで行を区切って列にするなんてよくあることで、タブを表せないのはとっても面倒です。他のツールを使えよという話もあるんですが、GNU grepでやってしまいたい場合は、次のようにすればいいのに、今日気づきました。

REM 環境変数名はなんでもいいけど、とりあえずTABにしてみた。
SET "TAB=(タブ文字)"

実際には「システムのプロパティ」→「環境変数」で設定してやってますが、バッチとかに書く場合は上のように。「環境変数」で設定する場合、タブキーを押しての入力はできないので*1、別のところでタブ文字をコピーして、貼り付けてやると環境変数にタブ文字を設定できます。

そうすると、

grep "%TAB%0000" input.txt > output.txt

で、タブ文字のあとに"0000"と続く文字列のある行を出力するなんてことができます。
気づいている人は気づいているかもしんないけど、自分的に嬉しい発見だったのと、他に同じ事で悩んでいる人がいるかもしんないので書いてみます。
なお、自分のつかっているGNU grepは、だいぶ古いものです。新しいのにしたら、自分的に嬉しくない動作をしたから古いのを使い続けている……のだったかなあと思うんですが、ちょっとそのへん忘れてしまってます。

*1:あったっけ?