#1 Le 29/11/2018, à 19:36
- Spirale21
[RESOLU] cherche solution élégante avec sed exemple=xxxxxxxxxxxxxxxxxx
Bonsoir
j'ai la phrase
mon exemple=pourri
je voudrais
mon exemple=excellent
Je pourrais y aller comme un gros bourrin et faire
sed 's#\(mon exemple=\)\(pourri\)#\1excellent#g'
mais c'est lourdaud selon moi.. j'aimerai plus un truc du style
sed 's#mon exemple=#&excellent#g
mais ça me donne
mon exemple=excellent=pourri
d'où ma question quelqu'un d'entre vous aurait-il une solution élégante ? La méthode gros bourrin marche mais quand on fait un script sed (pour traiter un fichiers de ~50 lignes), je trouve ça moche.
et comme 100 cerveaux valent mieux qu'un je me dit que quelqu'un va me dire "mais c'est facile..." et me dire la solution élégante que je cherche depuis 3 jours
(j'ai pensé à awk mais je sais pas trop l'utilisé)
--
PS: le pourri peut prendre plusieurs valeurs, tout comme le excellent tout comme le mon exemple.. le seul symbole connu c'est le '='
Merci pour vos solutions
Dernière modification par Spirale21 (Le 14/04/2019, à 18:52)
il y a trois manière de faire: la bonne, la mauvaise et la mienne
Hors ligne
#2 Le 29/11/2018, à 20:09
- pingouinux
Re : [RESOLU] cherche solution élégante avec sed exemple=xxxxxxxxxxxxxxxxxx
Bonjour,
$ sed -r 's#(mon exemple=).*#\1excellent#g' <<<"mon exemple=pourri"
mon exemple=excellent
Hors ligne
#3 Le 29/11/2018, à 20:31
- Spirale21
Re : [RESOLU] cherche solution élégante avec sed exemple=xxxxxxxxxxxxxxxxxx
oui je valide..merci
il y a trois manière de faire: la bonne, la mauvaise et la mienne
Hors ligne
#4 Le 29/11/2018, à 20:33
- pingouinux
Re : [RESOLU] cherche solution élégante avec sed exemple=xxxxxxxxxxxxxxxxxx
Avec une seule ligne à traiter, on peut simplifier :
$ sed -r 's#([^=]=).*#\1excellent#g' <<<"mon exemple=pourri"
mon exemple=excellent
Pour quelque chose de plus réaliste, avec plusieurs lignes, il faudrait que tu donnes un exemple.
Hors ligne
#5 Le 29/11/2018, à 21:29
- Spirale21
Re : [RESOLU] cherche solution élégante avec sed exemple=xxxxxxxxxxxxxxxxxx
en fait c'est plus une idée théorique qu'un fichier mais j'aime bien ton
sed 's/\(mon exemple=\).*/\1/g'
après je trouve pas ça aussi clair qu'avec le symbole & (mais je chipote)
il y a trois manière de faire: la bonne, la mauvaise et la mienne
Hors ligne
#6 Le 29/11/2018, à 21:30
- Spirale21
Re : [RESOLU] cherche solution élégante avec sed exemple=xxxxxxxxxxxxxxxxxx
sed 's/\(mon exemple=\).*/\1excellent/g'
il y a trois manière de faire: la bonne, la mauvaise et la mienne
Hors ligne
#7 Le 29/11/2018, à 22:59
- Postmortem
Re : [RESOLU] cherche solution élégante avec sed exemple=xxxxxxxxxxxxxxxxxx
Bonsoir,
VAR="mon exemple="; sed -i "s/$VAR.*/$VARexcellent/g" ~/fichier
La variable $VARexcellent n'existe pas...
Édit :
Une autre version :
sed '/mon exemple=/ s/=.*/=excellent/' fichier
Re édit :
Ou version awk :
awk -F = '/mon exemple=/ {$2="excellent"}1' 'OFS==' <<<'mon exemple=pourri'
mon exemple=excellent
Dernière modification par Postmortem (Le 29/11/2018, à 23:34)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#8 Le 14/04/2019, à 18:53
- Spirale21
Re : [RESOLU] cherche solution élégante avec sed exemple=xxxxxxxxxxxxxxxxxx
Après quelque mois d'utilisation je préfère la version sed à la version awk... merci à tous
il y a trois manière de faire: la bonne, la mauvaise et la mienne
Hors ligne
#9 Le 14/04/2019, à 21:14
- Watael
Re : [RESOLU] cherche solution élégante avec sed exemple=xxxxxxxxxxxxxxxxxx
dans la vie réelle, la ligne n'est à modifier que parce qu'elle contient une expression qui ne correspond pas au remplacement souhaité.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne