Ich habe ein Mini-System mit nur einem begrenzten Anzahl von Binärdateien ( bash
, cp
, cat
, sed
, ...). Ich habe keinen tail
Befehl und frage mich, ob ich die Tail-Funktionalität mit emulieren könntesed
cat foo.txt | tail -n 10
Ich weiß, dass ich mit sed die Zeilen 1-10 drucken kann cat foo.txt | sed -n '1,10p'
, aber wie würde ich die letzten 10 Zeilen drucken?
Antworten:
Sie könnten so etwas tun:
quelle
sed -e :a -e '$q;N;11,$D;ba' foo
um die Frage zu entsprechen.sed -e '1,11p' -e :a -e '$q;N;11,$D;ba'
Aber ich möchte immer noch den Schwanzteil verstehen !!!aber wenn du kein tac hast, kannst du sed nur so verwenden:
quelle
Ist
expr
mit Ihrem System verfügbar? Anschließend können Sie versuchen, die gewünschte Zeilennummer auszuwerten, nachdem Sie die Gesamtzahl der Zeilen in der Datei gezählt haben.Ich habe eine Datei
tmp
mit dem Namen erstellt, die die Zahlen von 1 bis 20 in jeder Zeile enthält.Natürlich können Sie verwenden
wc -l
, falls verfügbar.Der Befehl zum Berechnen der Gesamtzahl der Zeilen in der Datei stammt von sed one liners . Ich habe jedoch nicht überprüft, ob es auch mit leeren Dateien funktioniert.
PS Wenn
expr
nicht verfügbar, können Sie in Bash Zahlen subtrahieren, wie unten gezeigt:quelle