2011-04-15 7 views
13

मेरे पास कुछ अपाचे लॉग फाइलें हैं जिन्हें एक साथ जोड़ा गया है और मुझे उन्हें तिथि के अनुसार क्रमबद्ध करने की आवश्यकता है। वे निम्न स्वरूप में कर रहे हैं:मैं तिथि के अनुसार अपाचे लॉग फ़ाइल कैसे क्रमबद्ध कर सकता हूं?

"www.company.com" 192.168.1.1 [01/Jan/2011:00:04:17 +0000] "GET /foobar/servlet/partner/search/results?catID=1158395&country=10190&id=5848716&order_by=N-T&order_by_dir=-&product=10361996&siteID=1169823&state= HTTP/1.1" 200 10459 0 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 

लिनक्स कमांड लाइन पर ऐसा करने के बारे में जाने के लिए सबसे अच्छा तरीका क्या है?

+0

शायद इसे सर्वरफॉल्ट या unix.stackexchange.com पर ले जाएं? – ohmantics

उत्तर

27
#!/bin/sh 
if [ ! -f $1 ]; then 
    echo "Usage: $0 " 
    exit 
fi 
echo "Sorting $1" 
sort -t ' ' -k 4.9,4.12n -k 4.5,4.7M -k 4.2,4.3n -k 4.14,4.15n -k 4.17,4.18n -k 4.20,4.21n $1 > $2 
+0

यह एक शानदार जवाब है! धन्यवाद! – dotancohen

+0

दिलचस्प। मैन पेज यह स्पष्ट नहीं करता है कि आप एक प्रकार की कुंजी के हिस्से के रूप में "एम" का उपयोग कर सकते हैं; इस पर ध्यान दिलाने के लिए धन्यवाद! – offby1

+0

ग्रेट उत्तर और अपाचे लॉग के लिए पूरी तरह से काम करता है जो वास्तव में फ़ील्ड 4 है, मानते हैं कि डिफ़ॉल्ट विभाजक एक स्थान है। सॉर्ट मैन पेजों पर कुछ मिनट बिताते हुए मुझे इस कमांड को समझने में मदद मिली और मुझे अपना खुद का लिखने के लिए आत्मविश्वास महसूस हो रहा है। इसके अलावा किसी भी अन्य पाठकों के लिए जोड़ने के लिए, यह दिए गए फ़ील्ड 4 से वर्ण श्रृंखला का उपयोग कर रहा है जिसके क्रम में आप इसे सॉर्ट करना चाहते हैं। -के 4.9,4.12 एन वर्ष 'एन' संख्यात्मक क्रम दर्शाता है, -कि 4.5,4.7 एम 3 अक्षर महीने संक्षेप क्रम है और एम इसे ठीक से करने के लिए कहता है। @ offby1 यह इसे एक विकल्प के रूप में दिखाता है लेकिन उदाहरण बहुत अच्छा नहीं है। – Arturski

7

यह लगभग भी बताते तुच्छ है, लेकिन सिर्फ मामले में यह किसी को भी भ्रमित: GRM के जवाब तकनीकी रूप से # क्षेत्र 3, नहीं 4 का उपयोग किया जाना चाहिए, प्रश्नकर्ता की सटीक लॉग प्रारूप मैच के लिए। यही है, इसे पढ़ना चाहिए:

sort -t ' ' -k 3.9,3.12n -k 3.5,3.7M ... 

उनका उत्तर हर दूसरे सम्मान में सही है, और सामान्य लॉग प्रारूप के लिए इसका उपयोग किया जा सकता है।

+0

शायद यह एक टिप्पणी के रूप में बेहतर होगा - लेकिन यह सही है, तो कुछ इंटरनेट अंक हैं :) – STW

0

मैं ऑनलाइन उदाहरण के साथ बाहर इस लगा, 'लिनक्स कमांड लाइन' किताब, आदमी पृष्ठों, और परीक्षण और त्रुटि के माध्यम से स्कीम:

sort -k 3.9nb -k 3.5Mb -k 3.2nb [location and name of file] 

n या एम के साथ ख तरह बंद हो जाएगा उन वर्णों को पढ़ने से जो समझ में नहीं आते हैं जैसे/और: जब अंतरिक्ष पहले से ही एक डिलीमीटर के रूप में उपयोग किया जाता है तो जीवन को आसान बनाता है और आपको अभी भी अलग करना होगा:, /, और/या सॉर्टिंग के दौरान आप किसी भी अन्य चरित्र को मारना चाहते हैं।

उपर्युक्त स्क्रिप्ट साल पहले, फिर महीने और फिर तक तिथि के अनुसार क्रमबद्ध होगी। सभी बी के उतरने के बगल में एक आर रखें।

संबंधित मुद्दे