এই কাজ করা উচিত:
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যেখানে প্রথম ক্ষেত্রের মধ্যে রয়েছি যেখানে,
- -n সংখ্যার সাজান নির্দিষ্ট করে।
- -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