- 締切済み
アプリケーションのログファイルから、特定文字列を抽出し、
アプリケーションのログファイルから、特定文字列を抽出し、 一致する場合ユーザ名とアクションをまとめたcsvファイルに出力をさせるvbsを作成したいのですが、 いろいろと調べても殆どが結果に結びついていません。 イメージは以下のようなものになります。 インプットファイル(ログファイル)には、以下のように出力されています。 20100601 USER1 update 20100601 USER2 logon 20100601 USER3 delete . . . . このファイルから、たとえばupdateを抽出し、その行にupdateの文字列が含まれていたら、 行内にあるUSER1を抽出させます。 処理が終わったら、以下イメージのCSV出力ファイルを作成します。 DATE,USERNAME,logon,update,delete 20100601,USER1,0,1,0 20100601,USER2,1,0,0 20100601,USER3,0,0,1 集計はエクセルを使用するのでカウントはせず、フラグ(1)を立てるだけをイメージしています。 updateの文字列は実際には記号等が含まれるので、grepのような正規表現にて抽出しないと難しい と思うのですが、vbsでのgrepがちょっとよくわかりません。 http://okwave.jp/qa/q5973058.html 上記アドレスで同じような質問がされていたのですが、 記載内容を実行してもエラー出力されてしまったため、質問させて頂きました。 なにとぞよろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- fujiponxx
- ベストアンサー率32% (186/580)
どう見ても、左から日付8ケタ、 ユーザ名5ケタ、のこりアクションに見えますけど。 そういう仕様で、桁数でちょんぎれば 日付もユーザ名とアクションもいっぺんに取得できますけど。 >検索したい文字列は””で囲んでチェックを行うことをイメージしています。 ちょっと意味がわかりません。 検索したいレコードの中の文字列がわかってるならなにかで囲む必要ないですね。
- fujiponxx
- ベストアンサー率32% (186/580)
>updateの文字列は実際には記号等が含まれるので 検索したい文字列(の仕様)が明確じゃないとだめでしょうね。 ログファイルの内容がスペースで分割されているのであれば、 そのままexcelに読み込んでから処理すればいいとおもいますけど。 テキストを読み込む場合でも、 1行読み込んで、判定して、出力してというのを 繰り返せばいいと思いますけど。 わざわざ抽出する必要はないと思います。
補足
検索したい文字列は””で囲んでチェックを行うことをイメージしています。 内容はスペース等で分割されてはおらず、 日時毎にイベントをだだだだっと書き込んであるだけのログファイルです。 >テキストを読み込む場合でも、 >1行読み込んで、判定して、出力してというのを >繰り返せばいいと思いますけど。 >わざわざ抽出する必要はないと思います。 ユーザ名を拾うには、 各単語を検索→同行にあるユーザ名抽出 という必要があるように思えるのですが、なにか誤っているでしょうか?
補足
出力例は単純にしたイメージで、実際の記載はまったく異なります。曖昧な書き方で申し訳ありませんでした。 アプリケーションのログなので、デスティネーション等の情報が雑多に入り、桁数で抽出するのは不可能です。 また、アクションも「update」のように単純ではなく、=や/等を含んでいる特定文字列です。