Ini seharusnya bekerja:
awk -v max=0 '{if($1>max){want=$2; max=$1}}END{print want} ' version.log
The -v max=0set variabel maxuntuk 0, kemudian, untuk setiap baris, field pertama dibandingkan dengan nilai saat ini dari max. Jika lebih besar, maxdiatur ke nilai bidang 1 dan wantdiatur ke baris saat ini. Ketika program telah memproses seluruh file, nilai saat wantini dicetak.
Edit
Saya tidak menguji awksolusi sebelumnya dan itu benar-benar buruk saya untuk menyediakannya. Bagaimanapun, versi yang telah diedit dari jawaban harus bekerja (Terima kasih kepada terdon untuk memperbaikinya) dan saya menguji di bawah ini juga.
sort -nrk1,1 filename | head -1 | cut -d ' ' -f3
Saya sedang berada sortdi bidang pertama di mana,
- -n menentukan jenis numerik.
- -r menentukan membalikkan hasil sortir.
- -k1,1 menentukan bidang pertama untuk penyortiran terjadi.
Sekarang, setelah pengurutan, saya mem-piping output dan hanya mendapatkan hasil pertama yang akan memberi saya nilai numerik tertinggi pada kolom1 dalam hasilnya.
Sekarang, saya akhirnya cutmengirimnya ke dengan pembatas yang ditentukan sebagai ruang dan mencetak -f3yang merupakan output yang diinginkan.
Pengujian
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
Sekarang, setelah saya menjalankan perintah di atas untuk input seperti di atas, saya mendapatkan output sebagai,
/Max/number