【小技】規則性のある文字列から特定の部分のみ抽出や整形、単位を付ける等をする方法

仕事をしているとファイルの内容の一部だけを取得したいということがあります。
※例えば、Webサーバのログファイルの中から時間だけを取得したい、など。(無い方は申し訳ないが、近いものを想像してください)

 


今回は「Excel」と「EmEditor」を利用した方法を紹介します。
※「EmEditor」とはテキストエディタで、無料期間が終了するとEmEditor Freeに切り替わり機能が制限されますが、以降も無料で利用することができます(参照:https://jp.emeditor.com/)


 

目的:Webサーバのログファイルから日付を『〇年〇月〇日〇時〇分』の形式にしたリストを取得する

下記のようなログファイルがあったとします

192.168.0.1 - - [22/Aug/2018:11:44:18 +0900] "GET /elp/index.html HTTP/1.1" 200 16362
192.168.0.1 - - [22/Aug/2018:11:44:18 +0900] "GET /elp/css/css.css HTTP/1.1" 304 -
192.168.0.1 - - [22/Aug/2018:11:44:18 +0900] "GET /elp/css/index.css HTTP/1.1" 304 -
.
.
.

※WebサーバのログファイルにはIPアドレスやアクセス時間、アクセスした場所などを一行毎に保存してます

『22/Aug/2018:11:44:18 +0900』の部分が時間になりますので、この部分がほしいのですが、件数が少なければ、コピーして貼り付け、で終わりますが、ログファイルは数千、数万行になることは普通にありますので、これを一つずつコピーするのは、気が遠くなると思います。

そこで、「Excel」と「EmEditor」を使って一覧を取得できるようにしてみます。

※もっと良い方法があればおしえてください。

 

1.ログファイルを「EmEditor」で開きます

 

2.日付の前後の文字を置換する

ログファイルは規則性がありますので、日付は『 [ 』と『 ] 』で囲まれていますので、この2つを『タブ』に置き換えます。

※『¥t』が『タブ』を意味します

※『エスケープシーケンスを使用する』にチェックがついていることを確認してください

 

3.他の文字『 / 』『 : 』『 + 』も置換します

時間が『22/Aug/2018:11:44:18 +0900』ではわかり辛いので、『2018年8月22日11時44分』に置き換えるために、時間それぞれの間にある『 / 』『 : 』『 + 』も『タブ』に置き換えます。

 

4.「EmEditor」で全てを選択してコピーして、「Excel」に貼り付けます

Excel」に張り付けると『タブ』で区切って、次のセルに挿入されるので、貼り付けると下図のようになります。

 

5.「Excel」で整形します

全てのデータが「Excel」に入りましたので、整形をします。

以下、手順を箇条書き

  • 『Aug』を『8』に置き換え
  • 切り取ったセルを挿入、などで列の入れ替え(『D列』『C列』『B列』にする)
  • 『B列』~『F列』の次に列を挿入
  • 挿入した空白行に『年』『月』『日』『時』『分』を記入して、下までコピーする(セルを選択して右下をダブルクリックすると便利です※1
  • 『B列』~『K列』まで選択してコピー

※1:今回の場合は、『月』などは曜日と判断される場合があるので2行『月』と記入して、その2行分を選択して右下をダブルクリックになります

 

6.仕上げ

Excel」でコピーした内容を「EmEditor」に貼り付けをして、2・3と同じような方法で『タブ』を削除します(『空白』に置き換えます)

 

 

以上の操作で下記のように日付の一覧を取得できました。

2018年8月22日11時44分
2018年8月22日11時44分
2018年8月22日11時44分

 

同様の方法で、データ一覧に単位を付けたい、なども行えますので、ふとした時に思い出したら作業の効率がよくなるかもしれません。

Share

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Optionally add an image (JPEG only)