#1 Le 14/04/2019, à 18: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 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, à 19: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, à 20:08
- Spirale21
Re : Sed changer une ligne et en isérer une en même temps
Merci faut vraiment que je me mette à awk
il y a trois manière de faire: la bonne, la mauvaise et la mienne
Hors ligne
#4 Le 14/04/2019, à 21: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.
Hors ligne
#5 Le 14/04/2019, à 22: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