यह काम करना चाहिए:
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