Bonjour,
je ne connais pas très bien sed (bien que mon premier éditeur de texte (après les puncheuses) ait été l'antique "ed"!).
Pour gérer des expressions régulières sur plusieurs lignes, j'ai trouvé sur internet et utilisé la commande sed -e ':a' -e 'N' -e '$!ba' qui, d'après ce que j'ai compris, met dans la zone de travail de sed l'intégralité du fichier, y compris les fins de ligne (qui sont des linefeed). Il me suffit alors d'ajouter mes commandes de substitution comme -e 's/xxx\nyyy/zzz/g' et le tour est joué.
Sous linux, ça marche parfaitement! Sous AIX 6.1, j'ai constaté que "sed" ne comprend pas les ";". J'ai donc dû les supprimer et découper en autant de "-e" consécutifs. Sinon, le programme se comporte de la même manière et fournit le même résultat dans beaucoup de cas, sauf lorsque le fichier d'entrée ne comporte qu'une seule ligne.
Pour faire simple, j'ai réduit les instructions au minimum.
Sous linux:
Sous AIX:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $ echo -e 'ligne 1\nligne 2' | sed -e ':a' -e 'N' -e '$!ba' ligne 1 ligne 2 $ echo 'ligne 1' | sed -e ':a' -e 'N' -e '$!ba' ligne 1
J'en appelle à nos chers spécialistes (zipe31 mvvvv et autres
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $ echo 'ligne 1\nligne 2' | sed -e ':a' -e 'N' -e '$!ba' ligne 1 ligne 2 $ echo 'ligne 1' | sed -e ':a' -e 'N' -e '$!ba') pour tenter de m'expliquer pourquoi la dernière commande ne produit rien, si c'est normal ou si c'est un bug linux ou AIX et m'indiquer, le cas échéant, s'il y a un moyen d'obtenir le même comportement que sous linux?
Merci d'avance
)jack(
Partager