objectif
Effectuer des substitutions qui traversent des retours à la ligne (indisponible en sed POSIX).
code minimal
# remplacer un bloc entre balises
perl -0777 -pe 's/(?s)BEGIN\n.*?\nEND/BEGIN\n...remplace...\nEND/g' file.txt > out.txt
utilisation
# mise à jour d'une section YAML
perl -0777 -pe 's/(?s)(^settings:\n).*?(^# end-settings$)/$1 . " retry: 3\n" . $2/meg' config.yml > config.new.yml
variante(s) utile(s)
# in-place avec sauvegarde
perl -0777 -i.bak -pe 's/foo\nbar/baz\nqux/g' file.txt
notes
- l’option
(?s)active le dotall (’.’ match aussi les sauts de ligne). -0777lit tout le fichier en une seule chaîne.