¿Cómo copiar las primeras líneas de un archivo gigante y agregar una línea de texto al final usando algunos comandos de Linux?

89

¿Cómo copio las primeras líneas de un archivo gigante y agrego una línea de texto al final, usando algunos comandos de Linux?

biznez
fuente
1
En bashhead -n 100 yourfile.csv > shrunkfile.csv && echo 'morelines' >> shrunkfile.csv
Eric Leschinski

Respuestas:

147

El headcomando puede obtener las primeras nlíneas. Las variaciones son:

head -7 file
head -n 7 file
head -7l file

que obtendrá las primeras 7 líneas del archivo llamado "file". El comando a utilizar depende de su versión de head. Linux funcionará con el primero.

Para agregar líneas al final del mismo archivo, use:

echo 'first line to add' >>file
echo 'second line to add' >>file
echo 'third line to add' >>file

o:

echo 'first line to add
second line to add
third line to add' >>file

para hacerlo de un solo golpe.

Entonces, uniendo estas dos ideas, si desea obtener las primeras 10 líneas del input.txtarchivo output.txty agregar una línea con cinco "="caracteres, puede usar algo como:

( head -10 input.txt ; echo '=====' ) > output.txt

En este caso, hacemos ambas operaciones en un sub-shell para consolidar los flujos de salida en uno, que luego se usa para crear o sobrescribir el archivo de salida.

paxdiablo
fuente
21

Supongo que lo que está tratando de lograr es insertar una línea después de las primeras líneas de un archivo de texto.

head -n10 file.txt >> newfile.txt
echo "your line >> newfile.txt
tail -n +10 file.txt >> newfile.txt

Si no desea el resto de las líneas del archivo, omita la parte final.

DJ.
fuente
3
Los subshells le permiten hacer esto sin volver a abrir el archivo de salida:(head -n10 file.txt ; echo "Some stuff" ; tail -n +10 file.txt) > newfile.txt
hobbs
5

Primeras líneas: man head.

Agregar líneas: use el >>operador (?) En Bash:

echo 'This goes at the end of the file' >> file
extraño
fuente