ログファイルからユーザーエージェント文字列を抽出するにはどうすればよいですか?


12

現在、私はこのようなコマンドを実行して、最もリクエストされたコンテンツを取得しています:

grep "17\/Jul\/2011" other_vhosts_access.log | awk '{print $8}' | sort | uniq -c | sort -nr

ユーザーエージェントの文字列を確認したいのですが、問題はいくつかのスペースが含まれていることです。次に、典型的なログファイルの行を示します。UAは、引用符で区切られた最後のセクションです。

example.com:80 [ip] - - [17/Jul/2011:23:59:59 +0100] "GET [url] HTTP/1.1" 200 6449 "[referer]" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30"

これのためにawkより良いツールはありますか?

回答:


19

その形式が一貫していて、フィールドが実際に二重引用符で"囲まれている場合、フィールド区切り文字としてawkまたはcut withのいずれかを使用できます。

awk -F\" '{print $6}'

または:

cut -d\" -f 6

3
perl -ne 'if(/ "([^"] +) "$ /){$ ua {$ 1} ++;} END {for(keys%ua){print" $ ua {$ _} $ _ \ n 「}}」\
  access_log
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.