パソコン一つで現場作業とかって、ありますよね
トラブル発生時に行った時、早くしないと行けないので、まわりのプレッシャーで、押しつぶされます
そんな時、ログの解析とかを、やることが多いのですが、WindowsノートPCの時って、grepコマンドがなかったりすると、面倒です
そこで、DOSコマンドのfindstrを使うことになるのですが、grepと違うので、思うように抽出出来なかったりします。
なので、使い方を忘れた時の為に、ここに書いておきます
Help
ファイル (複数可) 内のテキスト文字列を検索します。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "文字列" [[ドライブ:][パス]ファイル名[...]]
/V 指定した文字列を含まない行をすべて表示します。
/C 指定した文字列を含む行の数だけを表示します。
/N 行番号を表示します。
/I 大文字と小文字の区別をしないで検索します。
/OFF[LINE] オフライン属性が設定されたファイルをスキップしません。
"文字列" 検索する文字列を指定します。
[ドライブ:][パス]ファイル名
検索するファイル (複数可) を指定します。
パスが指定されていないときは、プロンプトで入力されたテキストまた
は別のコマンドからパイプ処理で渡されたテキストを検索します。
単体文字抽出
findstr /c:"ほげ" *.log
任意文字列抽出
任意文字は、*単体でなく、.* としないとダメらしい *は、前文字の繰り返しという意味とのこと .は、任意一文字だそうな
findstr /r /c:"ほ.*げ" *.log
OR抽出
findstr /c:"ほげほげ" /c:"がばがば" *.log
AND抽出
ANDは、基本的にパイプで繋げるようだ
findstr /c:"ほげほげ" *.log | findstr /c:"たろうさん"
否定抽出
ほげほげ行のなかから「はなこさん」以外
findstr /c:"ほげほげ" *.log | findstr /V "はなこさん"
特殊文字
[]は、特殊文字だそうで、¥マークを付けて表現しないといけないらしい 他にもあると思うので、抽出出来なかったら、適当に付けてみればいけそう
findstr /c:"ほ\[げ\]"
ファイルへ出力
findstr /c:"ほげほげ" *.log > ほげほげ抽出.txt