複数ファイルから文字列検索
やりたいこと
Windowsで大量のテキストファイルから、特定の文字列を含んでいる行を結果として出力する。
ようはgrepのような文字列検索を行う。
ファイル名、何行目、その行の内容を結果としてテキストファイルに出力する。
ログの解析等に使えるかと。
実現方法
PowerShellのSelect-Stringコマンドを使用する。
具体的には下記のコマンドを実行すればよい。
Select-String "Error" *.txt | Out-File -FilePath ../result.txt
特定のディレクトリ内で検索をかけるため、はじめに”cd”コマンドでディレクトリ移動しておくと良い。
“Error” : 検索したい文字列を入れる。ここでは”Error”の文字列を含む行を抽出している。
*.txt : 検索対象のファイル。ここではテキストファイル全て。ログの検索なら*.log。
Out-File -FilePath ../result.txt : 出力先のファイルを指定。ここでは一つ上の階層に出力している。理由は「注意点」参照。
注意点
調査対象の拡張子と結果ファイルの拡張子が同じ場合、同一ディレクトリに入れると永久ループになる。よって、拡張子を変えるかディレクトリを変える必要がある。
ファイルによっては文字エンコーディングが必要な場合がある。-Encodingオプションを使用。
参考
オプションはたくさんあるので、より細かい検索指定は可能。
詳細はMicrosoftのMSDNに載っている。
ディスカッション
コメント一覧
まだ、コメントがありません