Bagaimana cara mengekstrak string agen pengguna dari file log?


12

Saat ini saya sedang menjalankan perintah seperti ini, untuk mendapatkan konten yang paling banyak diminta:

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

Saya ingin sekarang melihat string agen pengguna, tetapi masalahnya adalah mereka menyertakan beberapa spasi. Berikut ini adalah baris file log yang khas. UA adalah bagian terakhir yang dibatasi oleh tanda kutip:

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"

Apakah ada alat yang lebih baik daripada awk untuk ini?

Jawaban:


19

Jika format itu konsisten dan bidang tersebut benar-benar dibungkus dengan tanda kutip ganda, Anda dapat menggunakan awk atau cut dengan "sebagai pembatas bidang:

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

atau:

cut -d\" -f 6

3
perl -ne 'if (/ "([^"] +) "$ /) {$ ua {$ 1} ++;} END {untuk (kunci% ua) {print" $ ua {$ _} $ _ \ n "}} '\
  access_log
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.