Bu çalışmalı:
awk -v max=0 '{if($1>max){want=$2; max=$1}}END{print want} ' version.log
-v max=0Setleri değişken maxiç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, max1. alanın değerine wantve geçerli satıra ayarlanır. Program tüm dosyayı işlediğinde, geçerli değeri wantyazdı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 sortilk 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 cutboşluk olarak belirtilen ayırıcı -f3ile 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