Esto debería funcionar:
awk -v max=0 '{if($1>max){want=$2; max=$1}}END{print want} ' version.log
Los -v max=0
establece la variable max
a 0
y, a continuación, para cada línea, el primer campo se compara con el valor actual de max
. Si es mayor, max
se establece en el valor del primer campo y want
se establece en la línea actual. Cuando el programa ha procesado todo el archivo, want
se imprime el valor actual de .
Editar
No probé la awk
solución antes y fue realmente malo haberla proporcionado. De todos modos, la versión editada de la respuesta debería funcionar (Gracias a terdon por solucionarlo) y probé también la siguiente.
sort -nrk1,1 filename | head -1 | cut -d ' ' -f3
Estoy sort
en el primer campo donde,
- -n especifica la ordenación numérica.
- -r especifica revertir el resultado de la ordenación.
- Especifica -k1,1 primer campo para la clasificación de que se produzca.
Ahora, después de la clasificación, estoy canalizando la salida y obteniendo el primer resultado que me dará el valor numéricamente más alto de la columna1 en el resultado.
Ahora, finalmente lo canalizo cut
con el delimitador especificado como espacio e imprimo -f3
cuál es el resultado deseado.
Pruebas
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
Ahora, después de ejecutar el comando anterior para la entrada como se muestra arriba, obtengo la salida como,
/Max/number