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:
3
seleccione línea 3i
insertar texto y nueva líneax
escriba si se han realizado cambios (lo han hecho) y salgaO haciendo coincidir la cadena:
fuente
sed
serí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 -i
forma no portable ).(Esto no tiene nada que ver con
bash
).fuente
echo text to insert
porcat file-to-insert.txt
echo
s, podrías usarprintf '%s\n' 2 a 'text to insert' . wq
¿Qué tal algo como:
fuente
fuente