GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwenden Sie sed, um die letzten n Zeilen einer Datei zu entfernen

Ein lustiger und einfacher sed und tac Lösung :

n=4
tac file.txt | sed "1,$n{d}" | tac

HINWEIS

  • doppelte Anführungszeichen " werden benötigt, damit die Shell die $n auswerten kann Variable in sed Befehl. In einfachen Anführungszeichen wird keine Interpolation durchgeführt.
  • tac ist ein cat umgekehrt, siehe man 1 tac
  • die {} in sed sind da, um $n zu trennen &d (Wenn nicht, versucht die Shell, nicht existierende $nd zu interpolieren Variable)

Aus den sed-Einzeilern:

# delete the last 10 lines of a file
sed -e :a -e '$d;N;2,10ba' -e 'P;D'   # method 1
sed -n -e :a -e '1,10!{P;N;D;};N;ba'  # method 2

Scheint das zu sein, wonach Sie suchen.


Ich weiß nichts über sed , aber es kann mit head gemacht werden :

head -n -2 myfile.txt

Wenn Hardcoding n eine Option ist, können Sie sequentielle Aufrufe von sed verwenden. Um beispielsweise die letzten drei Zeilen zu löschen, löschen Sie die letzte Zeile dreimal:

sed '$d' file | sed '$d' | sed '$d'

Linux
  1. So verwenden Sie den Tar-Befehl unter Linux

  2. Wie entferne ich die Bom aus einer UTF-8-Datei?

  3. Verwendung des LCN-Dateimanagers

  4. Wie füge ich einen Text am Anfang einer Datei ein?

  5. Wie verwende ich sed, um nur doppelte Leerzeilen zu entfernen?

So verwenden Sie den Touch-Befehl unter Linux

So verwenden Sie den Linux-Kopfbefehl

So verwenden Sie den Linux-diff-Befehl

So entfernen Sie Zeilen aus einer Datei mit dem Sed-Befehl

Verwendung des Dateimanagers

Wie verwende ich den Gzip-Befehl unter Linux?