Ich habe gesucht, aber eine Antwort gefunden. Ich möchte die letzte Zeile (oder Aufzeichnung) in einer Datei drucken. Drucken Sie dann die erste Zeile mit nur awk. Ich weiß, wie man die erste Zeile druckt:
NR == 1{print}
und letzte Zeile
END{print}
Wie kann ich jedoch die Positionen wechseln? Ist es überhaupt möglich? Ich bekomme nur Fehler, wenn ich das versuche. Gibt es eine Möglichkeit, die zu integrieren
NR == 1{print}
Befehl in den END-Befehl? Auch hier möchte ich dies nur in awk durchführen. Vielen Dank!
awk 'NR==1 {first = $0; gotfirst = 1} END {if (gotfirst==1) {if (NR!=1) {print} print first}}' file
AWK hat eine
getline()
Funktion, die es ermöglicht, zur nächsten Zeile überzugehen . Der Beendigungsstatus dieser Zeile ist Null, wenn wir nicht weiter vorrücken können, dh wir haben das Dateiende erreicht. Daher besteht die Grundidee, die wir verwenden können, darin, die erste Zeile in einer Variablen zu speichern, die aktuelle Zeile zu verfolgen und weiter zu versuchen, fortzufahrengetline
. Wenn wir nicht können - drucken Sie die Variablen in der gewünschten Reihenfolge.quelle