La herramienta más fácil aquí podría ser sed
. Para insertar b.txt
en a.txt
después de la línea 5, se podría escribir:
sed '5r b.txt' a.txt
sed
lee el archivo especificado como argumento ( a.txt
) línea por línea. Todas las líneas se reproducen en la salida tal como aparecieron en la entrada, a menos que un comando las modifique.
La 5
es una dirección (número de línea) en la que se ejecutará el siguiente comando. El comando que usamos es r
, que toma un nombre de archivo como argumento (aquí b.txt
), lo lee por completo y lo inserta en la salida después de la línea actual.
Tal como está arriba, esta sed
línea de comando solo imprimirá la salida al terminal, sin escribir en ningún archivo. Puede redirigirlo a un nuevo archivo (¡no a ninguno de los archivos de entrada!) Utilizando la redirección de salida de Bash:
sed '5r b.txt' a.txt > c.txt
O puede modificar directamente el archivo de entrada externo a.txt
utilizando sed
el -i
interruptor 's (para "en el lugar"). Si lo escribe como -i.bak
, .bak
primero hará una copia de seguridad del archivo de entrada original con el sufijo :
sed -i '5r b.txt' a.txt
Un ejemplo:
$ cat a.txt
January
February
March
April
May
October
November
December
$ cat b.txt
June
July
August
September
$ sed '5r b.txt' a.txt
January
February
March
April
May
June
July
August
September
October
November
December