Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/04/2019, à 19:45

Spirale21

Sed changer une ligne et en isérer une en même temps

Bonjour,
J'ai besoin de vous pour sed
Situation initiale:

aaaa
cccc
dddd

et je voudrais arriver à

AAAA
bbbb
cccc
dddd

Naïvement je fais

$ echo -e "aaaa\ncccc\ndddd" |sed -e "/aaaa/ {c AAAA;a bbbb;}"

je me prends une erreur: sed: -e expression n°1, caractère 0: `{' non refermée
alors je contourne cette erreur en fesant

echo -e "aaaa\ncccc\ndddd" |sed '/aaaa/c\AAAA\nbbbb'

mais je trouve ça moche big_smile et pas très clair. Vous auriez une solution élégante qui utilise les options c\ et a\ de sed pour changer une ligne et en même temps en insérer une après (solution one liner awk bienvenue )?


il y a trois manière de faire: la bonne, la mauvaise et la mienne

Hors ligne

#2 Le 14/04/2019, à 20:34

pingouinux

Re : Sed changer une ligne et en isérer une en même temps

Bonsoir,

awk '/^aaaa$/{$0=toupper($0) RS "bbbb"}{print}' fichier

Hors ligne

#3 Le 14/04/2019, à 21:08

Spirale21

Re : Sed changer une ligne et en isérer une en même temps

Merci faut vraiment que je me mette à awk hmm


il y a trois manière de faire: la bonne, la mauvaise et la mienne

Hors ligne

#4 Le 14/04/2019, à 22:11

Watael

Re : Sed changer une ligne et en isérer une en même temps

pour des choses de ce genre, sed est mieux :

$ echo -e "aaaa\ncccc\ndddd" | sed '/^aaaa$/{s/aaaa/\U&/; a\
bbbb
}' 
AAAA
bbbb
cccc
dddd

Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#5 Le 14/04/2019, à 23:14

pingouinux

Re : Sed changer une ligne et en isérer une en même temps

Autre façon de faire :

sed  "/aaaa/ {abbbb
cAAAA
}" fichier

Hors ligne