Questo dovrebbe funzionare:
awk -v max=0 '{if($1>max){want=$2; max=$1}}END{print want} ' version.log
Le -v max=0
imposta la variabile max
a 0
, quindi, per ogni linea, il primo campo viene confrontato con il valore corrente di max
. Se è maggiore, max
è impostato sul valore del 1 ° campo ed want
è impostato sulla riga corrente. Quando il programma ha elaborato l'intero file, want
viene stampato il valore corrente di .
modificare
Non ho testato la awk
soluzione prima ed è stato davvero un peccato averla fornita. Ad ogni modo, la versione modificata della risposta dovrebbe funzionare (grazie a terdon per averlo corretto) e ho testato anche il seguito.
sort -nrk1,1 filename | head -1 | cut -d ' ' -f3
Sono sort
sul primo campo in cui,
- -n specifica l'ordinamento numerico.
- -r specifica invertire il risultato dell'ordinamento.
- -k1,1 specifica il primo campo per l'ordinamento.
Ora, dopo l'ordinamento, sto eseguendo il piping dell'output e sto solo ottenendo il primo risultato che mi darà il valore numericamente più alto di column1 nel risultato.
Ora, infine, lo installo cut
con il delimitatore specificato come spazio e stampando l' -f3
output desiderato.
analisi
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
Ora, dopo aver eseguito il comando precedente per l'input come sopra, ottengo l'output come,
/Max/number