sed '/function_1(/,/^[[:space:]]*}/ {
,/^[[:space:]]*}/ a\
Line that\
you want to\
insert (append) here
}' YourFile
- insérer la ligne après le
}
(seul dans la ligne avec éventuellement un espace avant) de la section commençant parfunction_1(
- je suppose qu'il n'y a pas de
}
seul dans votre code interne comme dans votre sample
soyez prudent lors de la sélection basée sur le nom de la fonction car elle pourrait être utilisée (et c'est normalement le cas) comme un appel à la fonction elle-même dans une autre section de code, donc peut-être un /^void function_1()$/
c'est mieux
Ne comptez pas, faites correspondre :
sed -e '/^void function_1()/,/^}$/ { /^}$/a\
TEXT TO INSERT
}' input
Cela examine le bloc entre la déclaration et l'accolade fermante, puis ajoute TEXT_TO_INSERT après l'accolade fermante.
Utilisez awk :
awk '1;/function_1/{c=4}c&&!--c{print "new text"}' file
1
est un raccourci pour{print}
, donc toutes les lignes du fichier sont imprimées- lorsque le modèle correspond, définissez
c
à 4 - quand
c
atteint 1 (doncc
est vrai et!--c
est vrai), insérez la ligne
Vous pouvez simplement utiliser !--c
mais en ajoutant le chèque pour c
être vrai signifie également que c
ne diminue pas au-delà de 0.
Essayez ceci avec GNU sed :
sed "/function_1/{N;N;N;a new_text
}" filename