findstrコマンド ファイルから文字列を検索 エラー抽出バッチ 作成方法

bat/cmd

こんばんは、NAOです。今日は、ネットワーク機器のエラーログを探していましたが大量のログからエラーを見つけるのが苦でした。そんな時に役に立つだろうと思ったのがエラーログ抽出バッチファイルです。

よく見かけるCisco機器ならshow log等のコマンドでログを確認します。

現場でログ確認したい時は、ネットワーク機器やサーバー機器のログをテキストファイルなどにエクスポートしログを確認したりします。ログを保存して作業ベンダにログを送ることも多々あります。

findstrコマンド エラー抽出バッチ

サーバー、ネットワークのログは大規模になればなるほど、大量のログからエラーを特定するのがとても大変です。

そこで考えたのがログ抽出バッチです!

まずは順を追ってコマンドの使い方からの説明です。

findstr コマンド ファイルから文字列を検索

findstrコマンドは ファイルの中からテキスト文字列を検索することの出来るコマンドです。

①下記のファイル(test.txt)があります。

※aから順に文字列が並んでいますが i の行にaが含まれています。

②この中から文字列を探したい場合は下記のように打ちます。

findstr“探したい文字”“検索対象のファイル”

aが含まれている文字列を返す為には、下記のコマンドを打ちます。

findstr a test.txt

④コマンドプロンプトの応答結果は下記になります。

aの文字を含む文字列だけ表示しています。

このようにfindstrコマンドは、ファイルから文字列探す場合に使用します。

findstr コマンド オプション

findstrコマンドのオプションを使用すると更に検索の幅が広がります。

オプション一部

/v 指定した文字列を含まない行をすべて検索

/g: 指定されたファイルから検索文字列を取得する

/i 大文字・小文字の区別をしないで検索する

/x 完全に一致する行のみ検索する。

/n findstrで条件に一致した行は、行番号をつけて返す。

findstr コマンド オプションを使用した例

findstr /v オプション 使い方

/v オプション (指定した文字列を含まない行をすべて検索) の使用例です。

findstr /v“除外したい文字”“検索対象のファイル”

①下記のコマンドを打ちます。

findstr /v a test.txt

②コマンド応答結果としてtest.txt の a を含む文字列は表示されてません。

このようにfindstrオプション /v は、文字列を除外して検索ができます。除外できる文字は、1文字だけでなく数文字以上の文字列も除外できます。

findstr /g オプション使い方

/g: オプション(指定されたファイルから検索文字列を取得する)の使用例です。

findstr /g:“文字列を保存したファイル”“検索対象のファイル”

①まずは、文字列を保存しファイルを作成します。a,b,d,e,g,o,pと打ちjogai.txtで保存します。

②下記のfindstrコマンドを打ちます。

findstr /g:jogai.txt test.txt

②コマンド結果として、/gオプションで指定したファイル(jogai.txt) にある文字列が表示されます。

findstr /v /g 組合せた 使い方

/v(指定した文字列を含まない行をすべて取得)と/g:(指定されたファイルから検索文字列を取得する)を組み合わせて使用する方法が便利です。一見、/v/gは組み合わせ出来ないと思いますが、組み合わせて使用することができます。

findstr /v/g:”文字列を保存したファイル”“検索対象ファイル”

①検索除外したい文字列をファイルとして保存します。(jogai.txt)

②下記のコマンドをコマンドプロンプトで打ちます。

findstr /v /g:jogai.txt test.txt

/g指定したファイルの文字列以外が表示されます。

このようにfindstr g:”ファイル” とすることで、”ファイル”に保存された文字列を表示します。

※補足

末尾に>(リダイレクト)をつけるとエラー抽出.txt ファイルが作成できます。

findstr /v /g:jogai.txt test.txt > エラー抽出.txt

findstrコマンド エラー抽出バッチの作成

①サーバー、ネットワーク機器のログを保存します。(下記はWindowsファイアウォールのログです。)

②検索除外したいファイルを作成し保存します。(jogai.txt) 今回はALLOW(許可)という文字列を除外します。

③下記のコードをコピーし、バッチファイルを作成保存します。 (バッチファイル名はfirewall_err抽出.bat)

@echo off

findstr /v /g:jogai.txt firewall.log > エラー.txt

④バッチをクリックすると②のファイルの文字列を除外してログを保存します。

⑤余計なログは弾いてエラーのみログを保存してくれるので各段にログが見やすくなります。

もっと簡易的で便利なエラーログ抽出があれば、またご紹介します。

それではー!

コメント

タイトルとURLをコピーしました