Ini seharusnya bekerja:
awk -v max=0 '{if($1>max){want=$2; max=$1}}END{print want} ' version.log
The -v max=0
set variabel max
untuk 0
, kemudian, untuk setiap baris, field pertama dibandingkan dengan nilai saat ini dari max
. Jika lebih besar, max
diatur ke nilai bidang 1 dan want
diatur ke baris saat ini. Ketika program telah memproses seluruh file, nilai saat want
ini dicetak.
Edit
Saya tidak menguji awk
solusi 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 sort
di 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 cut
mengirimnya ke dengan pembatas yang ditentukan sebagai ruang dan mencetak -f3
yang 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