Parfois on souhaite changer une chaîne de caractères de plusieurs mots dans un texte, et ceci en gardant des saut de lignes etc. Par exemple, s/je pense/nous pensons/g
La solution est d'utiliser les commandes N (rajoute une nouvelle ligne au buffer en cours), P (sort le buffer en cours jusqu'au premier retour chariot) et D (efface jusqu'au premier retour-chariot du buffer en cours):
sed -e '
N
s/je\([ \n]\{1,\}\)pense/nous\1pensons/g
P
D' input.txt > output.txt
# mais encore?
Posté par flyer . Évalué à 1.
Quelqu'un pourrait-il donner un jeu de données d'exemple?
[^] # Re: mais encore?
Posté par francoisp31 . Évalué à 1.
le N ajoute une ligne dans le buffer
ensuite
s/..../..../g c'est changer le texte
\pour chaque caractere spécial ( par exemple
\n = retour chariot
P redonne le buffer
D efface ce qui est avant le retour chariot.
voir la page man de sed pour les détails.
[^] # Re: mais encore?
Posté par Pierre . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.