Das sollte funktionieren:
awk -v max=0 '{if($1>max){want=$2; max=$1}}END{print want} ' version.log
Das -v max=0
setzt die Variable max
auf 0
, dann wird für jede Zeile das erste Feld mit dem aktuellen Wert von verglichen max
. Wenn es größer ist, max
wird auf den Wert des 1. Feldes gesetzt und want
auf die aktuelle Zeile gesetzt. Wenn das Programm die gesamte Datei verarbeitet hat, wird der aktuelle Wert von want
gedruckt.
Bearbeiten
Ich habe die awk
Lösung nicht früher getestet und es war wirklich schlecht, sie zur Verfügung gestellt zu haben. Wie auch immer, die bearbeitete Version der Antwort sollte funktionieren (danke an terdon für die Fehlerbehebung) und ich habe auch das Folgende getestet.
sort -nrk1,1 filename | head -1 | cut -d ' ' -f3
Ich bin sort
auf dem ersten Feld, wo,
- -n gibt die numerische Sortierung an.
- -r gibt an, dass das Sortierergebnis umgekehrt werden soll.
- -k1,1 gibt das erste Feld für die Sortierung an.
Nach dem Sortieren leite ich nun die Ausgabe weiter und erhalte nur das erste Ergebnis, das mir den numerisch höchsten Wert von Spalte1 im Ergebnis gibt.
Jetzt leite ich es cut
mit dem als Leerzeichen angegebenen Trennzeichen weiter und drucke das, -f3
was die beabsichtigte Ausgabe ist.
Testen
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
Nachdem ich den obigen Befehl für die Eingabe wie oben ausgeführt habe, erhalte ich die Ausgabe als
/Max/number
Sie können es mit tun
AWK
.Hier wird die erste Spalte jeder Zeile mit der Variablen
max
(die anfänglich 0 ist) verglichen . Wenn die erste Spalte einen Wert hat, der größer ist als der Wert,max
der in der Variablenline
für die zweite Spalte gespeichert ist , wird dies für jede einzelne Zeile der Datei fortgesetzt.Am Ende der Datei wird die
END
Regel ausgeführt, um dieline
Variable zu drucken .quelle
quelle
sort -k1 -n filename | tail -1 | awk '{print $2}'
quelle
Einfach können Sie es sortieren, indem Sie
sort
Befehl verwendenAusgabe:
quelle
cat
, dass sort Eingabedateien direkt übernehmen kann.quelle