Je travaille sur un script bash qui divisera le contenu d'un document texte en fonction des données de la ligne.
Si le contenu du fichier d'origine allait dans le sens de
01 line
01 line
02 line
02 line
Comment puis-je insérer dans la ligne 3 de ce fichier en utilisant bash pour aboutir à
01 line
01 line
text to insert
02 line
02 line
J'espère le faire en utilisant un hérédoc ou quelque chose de similaire dans mon script
#!/bin/bash
vim -e -s ./file.txt <<- HEREDOC
:3 | startinsert | "text to insert\n"
:update
:quit
HEREDOC
Ce qui précède ne fonctionne pas bien sûr, mais des recommandations que je pourrais implémenter dans ce script bash?
shell-script
text-processing
TheLovelySausage
la source
la source
Réponses:
Vous pouvez utiliser Vim en mode Ex:
3
sélectionnez la ligne 3i
insérer du texte et une nouvelle lignex
écrire si des modifications ont été apportées (elles l'ont été) et quitterOu en faisant correspondre une chaîne:
la source
sed
serait un choix traditionnel (GNU sed a probablement une forme plus simple que celle-ci).Ou, étant extrêmement traditionnel,
ed
(bonus! Édition sur place sans lased -i
forme non transférable ).(Cela n'a rien à voir avec
bash
.)la source
echo text to insert
parcat file-to-insert.txt
echo
s, vous pouvez utiliserprintf '%s\n' 2 a 'text to insert' . wq
Que diriez-vous de quelque chose comme:
la source
la source