Kullanıcı aracısı dizelerini bir günlük dosyasından nasıl ayıklayabilirim?


12

Şu anda en çok istenen içeriği almak için böyle bir komut çalıştırıyorum:

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

Şimdi kullanıcı aracısı dizeleri görmek istiyorum, ama sorun onlar birkaç boşluk içermesidir. İşte tipik bir günlük dosyası satırı. UA, tırnak işaretleri ile ayrılmış son bölümdür:

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"

Bunun için awk'den daha iyi bir araç var mı?

Yanıtlar:


19

Bu biçim tutarlıysa ve alan gerçekten çift tırnaklarla sarılmışsa ", alan sınırlayıcısı olarak awk veya cut ile kullanabilirsiniz :

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

veya:

cut -d\" -f 6

3
perl -ne 'if (/ "([^"] +) "$ /) {$ ua {$ 1} ++;} END {(% ua tuşları için) {print" $ ua {$ _} $ _ \ n "}} '\
  access_log
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.