Estou trabalhando em um script bash que dividirá o conteúdo de um documento de texto, dependendo dos dados na linha.
Se o conteúdo do arquivo original estiver ao longo das linhas de
01 line
01 line
02 line
02 line
Como posso inserir na linha 3 deste arquivo usando o bash para resultar em
01 line
01 line
text to insert
02 line
02 line
Espero fazer isso usando um heredoc ou algo semelhante no meu script
#!/bin/bash
vim -e -s ./file.txt <<- HEREDOC
:3 | startinsert | "text to insert\n"
:update
:quit
HEREDOC
O exposto acima não funciona, é claro, mas há recomendações que eu possa implementar nesse script bash?
shell-script
text-processing
TheLovelySausage
fonte
fonte
Respostas:
Você pode usar o Vim no modo Ex:
3
selecione a linha 3i
inserir texto e nova linhax
escreva se as alterações foram feitas (elas têm) e saiaOu combinando a string:
fonte
sed
seria uma escolha tradicional (o GNU sed provavelmente tem uma forma mais fácil que essa).Ou, sendo extremamente tradicional,
ed
(edição bônus! In-loco sem ased -i
forma não transportável).(Isso não tem nada a ver com
bash
.)fonte
echo text to insert
porcat file-to-insert.txt
echo
s, você poderia usarprintf '%s\n' 2 a 'text to insert' . wq
Que tal algo como:
fonte
fonte