Estoy trabajando en un script bash que dividirá el contenido de un documento de texto dependiendo de los datos en la línea.
Si el contenido del archivo original estuviera en la línea de
01 line
01 line
02 line
02 line
¿Cómo puedo insertar en la línea 3 de este archivo usando bash para dar como resultado
01 line
01 line
text to insert
02 line
02 line
Espero hacer esto usando un heredoc o algo similar en mi script
#!/bin/bash
vim -e -s ./file.txt <<- HEREDOC
:3 | startinsert | "text to insert\n"
:update
:quit
HEREDOC
Lo anterior no funciona, por supuesto, pero ¿alguna recomendación que pueda implementar en este script bash?
shell-script
text-processing
TheLovelySausage
fuente
fuente

Respuestas:
Puede usar Vim en modo Ex:
3seleccione línea 3iinsertar texto y nueva líneaxescriba si se han realizado cambios (lo han hecho) y salgaO haciendo coincidir la cadena:
fuente
sedsería una opción tradicional (GNU sed probablemente tiene una forma más fácil que esta).O, siendo extremadamente tradicional,
ed(¡bonificación! Edición en el lugar sin lased -iforma no portable ).(Esto no tiene nada que ver con
bash).fuente
echo text to insertporcat file-to-insert.txtechos, podrías usarprintf '%s\n' 2 a 'text to insert' . wq¿Qué tal algo como:
fuente
fuente