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 29/11/2018, à 20: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 big_smile 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 smile 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, à 19:52)


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

Hors ligne

#2 Le 29/11/2018, à 21: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, à 21: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, à 21: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, à 22: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, à 22: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, à 23:59

Postmortem

Re : [RESOLU] cherche solution élégante avec sed exemple=xxxxxxxxxxxxxxxxxx

Bonsoir,

Pending... a écrit :
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 30/11/2018, à 00:34)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#8 Le 14/04/2019, à 19: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, à 22: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