En ce moment j'utilise echo "Hello World" >> file.txt
pour ajouter du texte à un fichier mais j'ai aussi besoin d'ajouter du texte en 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
Ajout d'une ligne après la correspondance
sed '/\[option\]/a Hello World' input
Insérer une ligne avant le match
sed '/\[option\]/i Hello World' input
De plus, vous pouvez effectuer la sauvegarde et modifier le fichier d'entrée sur place à l'aide de -i.bkp
option pour sed
Oui, c'est possible avec sed
:
sed '/pattern/a some text here' filename
Un exemple:
$ cat test
foo
bar
option
baz
$ sed '/option/a insert text here' test
foo
bar
option
insert text here
baz
$
Avec awk
:
awk '1;/PATTERN/{ print "add one line"; print "\\and one more"}' infile
Gardez à l'esprit que certains caractères ne peuvent pas être inclus littéralement, il faut donc utiliser séquences d'échappement (ils commencent par une barre oblique inverse), par exemple pour imprimer une barre oblique inverse, il faut écrire \\
.
C'est en fait la même chose avec sed
mais en plus chaque nouvelle ligne incorporée dans le texte doit être précédée d'une barre oblique inverse:
sed '/PATTERN/a\
add one line\
\\and one more' infile
Pour plus de détails sur les séquences d'échappement, consultez le manuel.