GNU/Linux >> Linux Esercitazione >  >> Linux

Come usare sed per rimuovere le ultime n righe di un file

Un divertente e semplice sed e tac soluzione :

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

NOTA

  • virgolette doppie " sono necessari alla shell per valutare il $n variabile in sed comando. Tra virgolette singole, non verrà eseguita alcuna interpolazione.
  • tac è un cat al contrario, vedi man 1 tac
  • il {} in sed sono lì per separare $n &d (in caso contrario, la shell tenta di interpolare $nd inesistente variabile)

Dalle battute di sed:

# 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

Sembra essere quello che stai cercando.


Non so di sed , ma può essere fatto con head :

head -n -2 myfile.txt

Se l'hardcoding n è un'opzione, puoi utilizzare chiamate sequenziali a sed. Ad esempio, per eliminare le ultime tre righe, elimina l'ultima riga tre volte:

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

Linux
  1. Come usare il comando sed di Linux

  2. Come utilizzare il comando Tar in Linux

  3. Come rimuovere la Bom da un file Utf-8?

  4. Come utilizzo le righe di un file come argomenti di un comando?

  5. Come usare sed per sostituire la variabile di un file di configurazione?

Come utilizzare il comando touch in Linux

Come utilizzare il comando head di Linux

Come usare il comando diff di Linux

Come rimuovere le righe da un file usando il comando Sed

Come utilizzare il file manager

Come utilizzare il comando Gzip in Linux?