IISやApacheのアクセスログファイルなどから、特定の行だけ(例えば「sales」や「campaign」など)を抽出してアクセス状況を調査したい、というケースが多々あるかともいます。
エクセルなどで一つずつ編集する方法もあるかと思いますが、量が膨大になると大変です。
Perlを使用すれば、以下のスクリプト(ワンライナー)で簡単に抽出できます。
Perlがインストールされていれば、コマンドプロンプトに例えば以下のように入力します。
perl -ne "print if ( /search-string/ )" inputfile.txt > outputfile.txt
「search-string」が出力したい行に含まれる文字列です(Perlの正規表現も可能。Perlの正規表現についてはこちら)。
「inputfile.txt」が抽出元のファイル、「outputfile.txt」が結果が出力されるファイルです。
これだけで、「inputfile.txt」から「search-string」を含む行が「outputfile.txt」に書き出されます。
また、テキストファイルであればログファイルでなくても抽出ができます。
csvファイルから特定の文字列を含む行だけを抽出したいときなどにも使えます。
タグ:Perl