यह काम करना चाहिए:
awk -v max=0 '{if($1>max){want=$2; max=$1}}END{print want} ' version.log
-v max=0सेट चर maxकरने के लिए 0, फिर, प्रत्येक पंक्ति के लिए, पहले क्षेत्र के वर्तमान मूल्य की तुलना में है max। यदि यह अधिक है, maxतो 1 फ़ील्ड के मान पर wantसेट है और वर्तमान लाइन पर सेट है। जब प्रोग्राम ने पूरी फ़ाइल को संसाधित किया है, तो वर्तमान मूल्य wantमुद्रित होता है।
संपादित करें
मैंने awkपहले समाधान का परीक्षण नहीं किया था और इसे प्रदान करना वास्तव में मेरा बुरा था। वैसे भी, जवाब का संपादित संस्करण काम करना चाहिए (इसे ठीक करने के लिए धन्यवाद) और मैंने नीचे भी परीक्षण किया।
sort -nrk1,1 filename | head -1 | cut -d ' ' -f3
मैं sortपहले क्षेत्र पर हूँ जहाँ,
- -एक संख्यात्मक प्रकार निर्दिष्ट करता है।
- -r निर्दिष्ट करता है सॉर्ट परिणाम उल्टा।
- -k1,1 सॉर्टिंग के लिए पहला फ़ील्ड निर्दिष्ट करता है।
अब, छँटाई के बाद मैं आउटपुट को पाइप कर रहा हूं और बस पहला परिणाम प्राप्त कर रहा हूं जो मुझे परिणाम में कॉलम 1 के संख्यात्मक उच्चतम मूल्य देगा।
अब, मैं अंत में इसे cutअंतरिक्ष के रूप में निर्दिष्ट सीमांकक के साथ पाइप करता हूं और मुद्रण -f3जो इच्छित आउटपुट है।
परिक्षण
cat filename
112030 /opt/oracle/app/oracle/product/11.2.0
121010 /opt/oracle/app/oracle/product/12.1.0
2312 /hello/some/other/path
3423232 /this/is/really/big/number
342 /ok/not/the/maximum/number
9999899 /Max/number
9767 /average/number
अब, उपरोक्त इनपुट के लिए उपरोक्त कमांड चलाने के बाद, मुझे आउटपुट मिलता है,
/Max/number