En ce moment, je me sers echo "Hello World" >> file.txt
d’ajouter du texte à un fichier, mais j’ai également besoin d’ajouter du texte au-dessous d’une certaine chaîne, disons "[option]", est-ce possible avec sed
?
PAR EXEMPLE:
Fichier d'entrée
Some text
Random
[option]
Some stuff
Fichier de sortie
Some text
Random
[option]
*inserted text*
Some stuff
text-processing
sed
replace
Javier Villanueva
la source
la source
input
lesoutput
lignes. Parce que votre Q n'est pas clair. Vous pouvez également le faireecho "Hello World [option]" >> file.txt
, mais cela n’a aucun sens.Réponses:
Ajouter ligne après match
sed '/\[option\]/a Hello World' input
Insérer une ligne avant le match
sed '/\[option\]/i Hello World' input
En outre, vous pouvez effectuer une sauvegarde et modifier le fichier d’entrée sur place à l’aide
-i.bkp
dela source
sed: 1: "/pattern/a some text here": command a expects \ followed by text
\ <<NEWLINE>>
après l’a
option0,
des commandes aux commandes:sed '0,/\[option\]/a Hello World' input
oused '0,/\[option\]/i Hello World' input
Oui, c'est possible avec
sed
:Un exemple:
la source
foo bar option bar option baz
. Alors le motif devientfoo bar option bar option addedstring baz
?Avec
awk
:Gardez à l'esprit que certains caractères ne peuvent pas être inclus à la lettre; vous devez donc utiliser des séquences d'échappement (elles commencent par une barre oblique inverse), par exemple, pour imprimer une barre oblique inverse littérale, vous devez écrire
\\
.C'est en fait la même chose
sed
mais en plus, chaque nouvelle ligne incorporée dans le texte doit être précédée d'une barre oblique inverse:Pour plus de détails sur les séquences d'échappement, consultez le manuel.
la source