এই কাজ করা উচিত:
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