« ActivePerlからOLEを使用してExcelを操作(再掲載) | トップページ | リモートデスクトップで「ターミナルサーバーの最大接続数を超えています」が出た時の対応 »

2011/06/27

Windowsでgrep(みたいなこと)を行う場合

 UNIX系OSを触った経験があれば、一度はgrepコマンドを使ったことがあると思う。Windowsではgrepコマンドそのものはないが、似たような事が出来るコマンドが用意されている。それが『findstr』コマンドです。

 コマンドの詳細などはググれば沢山出てくるので省略するが、私の主な使い方をちょっとだけ紹介。

①CSVとして保存された多くのメッセージログから、ある決まったIDの行を抜き出し、ID番号.logに保存
findstr /i /c:"ID番号をここに記述" *.log > ID番号をここに記述.log

②コマンドの結果をログに出力して、エラー判定を行う(例:コマンドの結果をresult.logに書き出し、結果に"OK"が含まれていれば正常終了かどうか判断する)

findstr /c:"ok" result.log
if %errorlevel% == 1 goto error
rem ↑OKが含まれていればerrorlevel は 0となり、含まれていなければ 1となる

:error
rem エラー処理を記述

 一つのファイルから文字を検索することもできるけど、複数ファイルにまたがるテキストを検索することができるのがfindstrコマンドの魅力。また、パイプラインで渡された文字列も検索対象に出来る。あと、perlとは比較にならないかも知れないけど、正規表現も使えるのはうれしいところ。ただし、/Cと一緒に正規表現を使いたい場合は/Rも一緒に付けること。でないとリテラルとして判断してしまう。また、複数の条件を指定したい場合は/Cを何度も記述できる!

|

« ActivePerlからOLEを使用してExcelを操作(再掲載) | トップページ | リモートデスクトップで「ターミナルサーバーの最大接続数を超えています」が出た時の対応 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/49420/52061842

この記事へのトラックバック一覧です: Windowsでgrep(みたいなこと)を行う場合:

« ActivePerlからOLEを使用してExcelを操作(再掲載) | トップページ | リモートデスクトップで「ターミナルサーバーの最大接続数を超えています」が出た時の対応 »