¿Cómo puedo eliminar la primera línea de un archivo y guardar los cambios?
Intenté esto pero borra todo el contenido del archivo.
$sed 1d file.txt > file.txt
shell-script
sed
ksh
kickass13
fuente
fuente

sed, puede usarsed -i .bak '1d' file.txt.ed.edcomando sería:printf "%s\n" 1d w q | ed file.txt(I heart ed)-exec sed -i '1d' {} \;Una opción alternativa muy liviana es simplemente 'ajustar' todo menos la primera línea (esta puede ser una forma fácil de eliminar encabezados de archivos en general):
Siguiendo a @Evan Teitelman, puedes:
Para evitar un archivo temporal. Otra opción podría ser:
Etcétera. Prueba de la última:
Vaya, perdimos una nueva línea (según el comentario de @ 1_CR a continuación), intente en su lugar:
Volviendo a sed, intente:
o quizás
Para evitar efectos secundarios.
fuente
tailtruco funcionó para mí (tardó menos de 3 segundos en un archivo de 130 MB). ¡Gracias!echo "$(tail -n +2 file.txt)" > file.txtEs la respuesta perfecta.También echa un vistazo a
spongepartirmoreutils.spongeabsorbe los datos de la entrada estándar hasta que el final de escritura de la entrada estándar se cierra antes de escribir en un archivo. Se usa así:fuente
Este tema es de interés, por lo que pruebo el punto de referencia de 3 maneras:
sed '1d' d.txt > tmp.txttail -n +2 d.txt > tmp.txtsed -i '1d' d.txtTenga en cuenta que el objetivo
d.txtes un archivo de 5.4GBObtén el resultado:
Conclusión: a continuación parece ser la forma más rápida:
sed '1d' file.txt > tmpfile; mv tmpfile file.txtfuente
sed '1d' d.txtmétodo no incluyó (o eso parece al leer sus pruebas) elmvcomando. En mis pruebas en FreeBSD con un archivo de 20 MB,sed -ifue el más rápido.exse puede usar para una verdadera edición in situque no involucra un archivo temporalfuente
strace -e open ex -c ':1d' -c ':wq' foo. ex trunca el archivo original con el archivo temporal, mientras que la opción -i de GNU sed sobrescribe el original con el archivo temporal. No estoy seguro de cómo funciona el sed de BSD.La forma más corta y sencilla de eliminar la primera línea de un archivo usando
sedes:fuente
Puede usar Vim en modo Ex:
1encontrar la primera líneadEliminarxguardar y cerrarfuente
Este comando eliminará 1 línea y guardará como "file.txt".
fuente
Para eliminar una línea de praticiler en el archivo
Archivo Sed '1d'
Archivo Sed '1d3d'
Eliminar personaje en línea
1 Eliminar los dos primeros charter en lin
Archivo de Sed /^..//
2 Eliminar las dos últimas líneas de chrectercina
Archivo de Sed / .. £ //
3 Eliminar línea en blanco
Archivo Sed '/ ^ £ / d'
fuente
£≠$.Podría usar vim para hacer esto:
fuente
cat file01 | sed -e '1,3d'
// muestra contenido en el archivo 01 pero elimina la primera y tercera línea
fuente