GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar sed para eliminar las últimas n líneas de un archivo

Un divertido y sencillo sed y tac solución:

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

NOTA

  • comillas dobles " son necesarios para que el shell evalúe el $n variable en sed dominio. En comillas simples, no se realizará ninguna interpolación.
  • tac es un cat al revés, ver man 1 tac
  • el {} en sed están ahí para separar $n &d (si no, el shell intenta interpolar un $nd inexistente variables)

De las frases ingeniosas de 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

Parece ser lo que estás buscando.


No sé sobre sed , pero se puede hacer con head :

head -n -2 myfile.txt

Si codificar n es una opción, puede usar llamadas secuenciales para sed. Por ejemplo, para eliminar las últimas tres líneas, elimine la última línea tres veces:

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

Linux
  1. Cómo usar el comando sed de Linux

  2. Cómo usar el comando Tar en Linux

  3. ¿Cómo quitar el Bom de un archivo Utf-8?

  4. Cómo usar el administrador de archivos LCN

  5. ¿Cómo uso las líneas de un archivo como argumentos de un comando?

Cómo usar el comando táctil en Linux

Cómo usar el comando de cabeza de Linux

Cómo usar el comando diff de Linux

Cómo quitar líneas de un archivo usando el comando Sed

Cómo usar el administrador de archivos

¿Cómo usar el comando Gzip en Linux?