2011-11-22 14 views
11

Vi los ejemplos sed, pero no importa cómo escriba que no eliminará mi primera línea. En realidad, lo hice más pruebas y no va a borrar mi primera línea, ya sea, por lo que para asegurarse de que estoy haciendo algo mal:Código de trabajo de Bash para eliminar la primera o la última línea del archivo

sed '1d' filename 

o para la última línea

sed '$d' file name 

Quiero que los cambios en tener lugar en el mismo archivo, y no quiere otro archivo de salida. Entonces, ¿cuál es la forma correcta de eliminar la última línea de mi archivo?

+0

posible duplicado de [Bash - retire el última línea de un archivo] (http://stackoverflow.com/questions/4881930/bash-remove-the-last-line-f rom-a-file) –

Respuesta

14

sed -i '$ d' filename. El indicador -i edita el archivo en su lugar.

+1

Esto elimina la última línea. Para eliminar la primera línea, use 'sed -i '1,1d' filename'. – skolima

4

Puede utilizar el interruptor de --in-place (-i):

sed -i '$d' filename 

Fuente: man sed

3

Si su sed admite edición in situ, es sed -e '1d' -e '$d' -i filename.

2

dando esta respuesta ya que sed no está etiquetado.

head -`wc -l test2.cc | awk '{print ($1-1)}'` test2.cc 
4

¡Aquí tienes! eliminar primera línea

sed '1,1d' file1 >> file1.out 

borrar última fila/línea

sed '$d' file2 >> file2.out 
+0

Buena respuesta. Casi concateno ambos de la siguiente manera: 'sed '' 1,1d; $ d '' file1> file2' –

0

Trate cat file1 | sed "1,1d; $d" > file2

3

Porque nadie le da ninguna amor:

ed filename <<'END' 
1d 
$d 
w 
q 
END 
Cuestiones relacionadas