Bu çalışmalı:
awk -v max=0 '{if($1>max){want=$2; max=$1}}END{print want} ' version.log
-v max=0
Setleri değişken max
için 0
, daha sonra, her hat için, birinci alan mevcut değeri ile karşılaştırılır max
. Daha büyükse, max
1. alanın değerine want
ve geçerli satıra ayarlanır. Program tüm dosyayı işlediğinde, geçerli değeri want
yazdırılır.
Düzenle
awk
Çözümü daha önce test etmedim ve bunu sağlamak benim için gerçekten kötüydü. Her neyse, cevabın düzenlenmiş versiyonu çalışmalıdır (düzeltmek için terdon sayesinde) ve ben de aşağıda test ettim.
sort -nrk1,1 filename | head -1 | cut -d ' ' -f3
Ben am sort
ilk alan üzerinde ing nerede,
- -n sayısal sıralamayı belirtir.
- -r sıralama sonucunun tersini belirtir.
- -k1,1, sıralamanın gerçekleşmesi için ilk alanı belirtir.
Şimdi, sıralama sonra ben çıkış boru ve sadece sonuçta bana sütun1 sayısal olarak en yüksek değerini verecek ilk sonucu alıyorum.
Şimdi, sonunda cut
boşluk olarak belirtilen ayırıcı -f3
ile ve istenen çıktı olan baskı ile boru .
Test yapmak
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
Şimdi, yukarıdaki giriş için yukarıdaki komutu çalıştırdıktan sonra, çıktıyı şu şekilde alıyorum:
/Max/number