2011-01-17 13 views

Antwort

2

Etwas wie:

awk '{ prev_line=this_line; this_line=$0 } END { print prev_line }' < file 

Im Wesentlichen hält eine Aufzeichnung der Zeile vor dem aktuellen, bis Sie das Ende der Datei schlagen, dann die vorhergehende Zeile drucken.

bearbeiten Kommentar zu antworten:

nur um das zweite Feld in der vorletzten Zeile zu extrahieren:

awk '{ prev_f2=this_f2; this_f2=$2 } END { print prev_f2 }' < file 
+0

was ist pl und tl? – suvitha

+0

@Raje - Ich habe die Antwort bearbeitet, um es ein wenig klarer zu machen; Sie sind awk-Variablen. –

+0

wenn wir das zweite Feld dieser Zeile drucken wollen? – suvitha

1

Sie es mit awk tun können, aber Sie können diese finden:

tail -2 inputfile | head -1 

wird eine schnellere Lösung sein - es ergreift die letzten zwei Zeilen des vollständigen Satzes dann der erste von diesen beiden.

Das folgende Transkript zeigt, wie das funktioniert:

pax$ echo '1 
> 2 
> 3 
> 4 
> 5' | tail -2 | head -1 
4 

Wenn Sie Muss Verwendung awk, können Sie verwenden:

pax$ echo '1 
2 
3 
4 
5' | awk '{last = this; this = $0} END {print last}' 
4 

Es funktioniert durch die letzte und aktuelle Zeile in Variablen zu halten last und this und nur last ausdrucken, wenn die Datei fertig ist.

Verwandte Themen