मैं एक लॉग फ़ाइल से उपयोगकर्ता एजेंट स्ट्रिंग्स कैसे निकालूंगा?


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"

क्या इसके लिए जाग से बेहतर उपकरण है?

जवाबों:


19

यदि वह प्रारूप सुसंगत है और क्षेत्र वास्तव में दोहरे उद्धरण चिह्नों में लिपटा हुआ है, तो आप "फ़ील्ड सीमांकक के रूप में या तो awk या कट का उपयोग कर सकते हैं :

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

या:

cut -d\" -f 6

3
perl -ne 'if (/ "([^"] +) "$ /) {$ ua {$ 1} ++;} END {के लिए (कीज़% ua) {प्रिंट" $ ua {$ _} $ _ \ n "}} '\ _
  access_log
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.