Flux rss
Rechercher : dans
Par :

Commande SED , rempalcer à partir de...

ponpon27, le jeudi 10 avril 2008 à 14:45:33 
 Signaler ce message aux modérateurs

Bonjour,

Voici donc ce qui m'amene...

J'aimerai , dans un fichier, remplacer une chaine de caractere que je ne connais pas, mais qui se situe aprés une autre chaine de caracterre , elle, identifiée...

en gros, jaimerai mettre a ce jour un fichier contenant:

blabla blabla bla bla TOTO xxxx

et changer cette phrase par

blabla blabla bla bla TOTO yyyy


Il me semble qu'avec SED je peut le faire mais mon soucis et syntaxique, et jaiemrais donc savoir comment ecire : " change tout se qui suit sur la ligne qui contient xxxx , et ceci à partir de xxxx et remplace le par yyyy"

Bon ca n'a pas l'air clair, alors je suis à votre disposition pour repondre aux questions...lol


Merci

Configuration: Linux
Mozilla 1.7.2

1

jipicy, le jeudi 10 avril 2008 à 14:50:33

Salut,

Un exemple plus parlant serait très apprécié...

Est-ce que les 2 chaînes se trouvent sur la même ligne ?
JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

2

ponpon27, le jeudi 10 avril 2008 à 14:54:47

Exemple concret:

mon fichier comporte X lignes syntaxées comme ca:

...
htpasswd titi44 PASSWORD1
htpasswd titi45 PASSWORD2
htpasswd titi46 PASSWORD3
...

jaimerai pouvoir remplacer PASSWORD2 de la ligne contenant titi45 , et seulement celle la...par PASSWORDX

Répondre à ponpon27

3

jipicy, le jeudi 10 avril 2008 à 15:01:05

 sed '/titi45/ s/\(.* titi45\).*/\1 PASSWORDX/'
;-))
JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

4

ponpon27, le jeudi 10 avril 2008 à 15:04:25

Merci..ca a l'air simple pourtant..

Pourrais tu me detailler cette commande pour que je ne fasase pas QUE l'appliquer mais que je puisse la reutiliser un jour sans avoir a vous deranger encore...

Merci!!

Répondre à ponpon27

5

jipicy, le jeudi 10 avril 2008 à 15:13:36

Bon en fait on peut même se passer du début :

 sed 's/\(.* titi45\).*/\1 PASSWORDX/'

En fait on regroupe dans une sous-expression "\(...\)" tout ce qui trouve avant la chaine "titi45" (elle même comprise dans la sous-expression), puis on demande dans la partie de remplacement de substituer ce que contient la sous-expression par elle même (représentée par "\1" vu que c'est la seule, s'il y avait plusieurs sous-expressions (jusqu'à 9), chacune serait représentée par son rang) suivi par le nouveau mot de passe "PASSWORDX".

Voir SED - The Stream EDitor - Part II - Les sous-expressions
JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

6

ponpon27, le jeudi 10 avril 2008 à 15:29:41

Limpide..

Et dans le cas ou titi45 serait en fait titi$serie ou serie aurait la valeur 45 ?quelle serait la nouvelle syntaxe a ce moment la? estce $serie serait reconnu comme variable ou pas?

Répondre à ponpon27

7

jipicy, le jeudi 10 avril 2008 à 15:33:42

Voir SED - The Stream EDitor - Part II - Le remplacement de variables
JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

8

ponpon27, le jeudi 10 avril 2008 à 15:42:15

Merci beaucoup à toi..cela fonctionne nickel...

Répondre à ponpon27

9

ponpon27, le vendredi 11 avril 2008 à 08:48:20

Arff ..je me suis un peu avancé endisant que cela fonctionnait..

Cela fonctionne en effet , jai bien le remplacement qui s'effectue mais....ce remplacement ne s'effectue pas QUE sur la ligne qui contient la chaine recherchée....mais sur toutes les lignes du fichiers...en fait cela me remplace TOUTES les dernieres chaines de caracteres de mon fichier par PASSWORDX..et pas seulement la chaine de cararactere recherchée...

Répondre à ponpon27

10

ponpon27, le vendredi 11 avril 2008 à 08:49:22

Je passe de :
htpasswd titi44 PASSWORD1
htpasswd titi45 PASSWORD2
htpasswd titi46 PASSWORD3

à:
htpasswd titi44 PASSWORDX
htpasswd titi45 PASSWORDX
htpasswd titi46 PASSWORDX

Répondre à ponpon27

11

jipicy, le vendredi 11 avril 2008 à 09:25:13

Re-

Poste ta ligne de commande (ou ton script) et le résultat, sans ça on peut pas voir où ça coince ;-\
JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

12

jipicy, le vendredi 11 avril 2008 à 09:31:39

Pour exemple :

jp@MDK:~/tmpfs ssh$ cat plop
htpasswd titi44 PASSWORD1
htpasswd titi45 PASSWORD2
htpasswd titi46 PASSWORD3

jp@MDK:~/tmpfs ssh$ serie=45
jp@MDK:~/tmpfs ssh$ echo ${serie}
45

jp@MDK:~/tmpfs ssh$ sed "s/\(.*titi${serie}\).*/\1 PASSWORDX/" plop
htpasswd titi44 PASSWORD1
htpasswd titi45 PASSWORDX
htpasswd titi46 PASSWORD3

jp@MDK:~/tmpfs ssh$
;-))
JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

13

 ponpon27, le vendredi 11 avril 2008 à 09:45:18

Je suis un ane!!!
Ca marche effectivement tres bien merci..j'avais appeller ma variable SERIE et dans mon script j'invoquais la variable serie!! en minuscules!!

Merci bcp de ton aide précieuse...

Répondre à ponpon27
Commande sed Bonjour, j'aimerais bêtement insérer du texte dans un fichier avec la commande sed mais je n'y arrive pas... c'est pour mettre dans un script, donc j'aimerais pouvoir faire un truc du genre "sed [argument] 'texte à insérer' fichier_destination" je... www.commentcamarche.net/forum/affich-1982836-commande-sed
[Unix] Commande sed Bonjour, A tout les acrros d'unix, J'ai un fichier d'entrée contenant: je souhaite avec une commande unix faire comprendre à sed le saut de ligne et remplacer la chaine rechercher en < e> Comment faire comprendre à sed le saut... www.commentcamarche.net/forum/affich-2368707-unix-commande-sed
Utilisation commande SED Bonjour, J'ai plusieurs fichiers et je voudrais simplement remplacer un mot dans ces fichiers sans avoir a rentrer dedans en VI. J'utilise la commande suivante : sed 's/Old_mot/New_mot/g' Defaults Le remplacement ce fait bien mais seulement à... www.commentcamarche.net/forum/affich-2691331-utilisation-commande-sed
Sed - Introduction à SED - Part IIISED - The Stream EDitor - Part III Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"... www.commentcamarche.net/faq/sujet-9558-sed-introduction-a-sed-part-iii
Sed - Introduction à SED - Part ISED - The Stream EDitor - Part I Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED" un... www.commentcamarche.net/faq/sujet-9536-sed-introduction-a-sed-part-i
Sed - Introduction à SED - Part IISED - The Stream EDitor - Part II Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"... www.commentcamarche.net/faq/sujet-9559-sed-introduction-a-sed-part-ii
Retour chariot avec commande sedBonjour, Comment remplacer dans un fichier un caractère par un retour chariot avec la commande sed ? J'ai essayé la commande: $: sed -e s/"x"/\\"\n"/g fichier Résultat: les x sont remplacés par \n ! Quelqu'un sait pourquoi sed ne prend pas en compte... www.commentcamarche.net/forum/affich-1651354-retour-chariot-avec-commande-sed
Commande sed et passage a la ligneBonjour, je dois supprimer tout les espaces, les chiffres et les sauts de lignes dans un fichiers texte. J'ai donc utilisé la commande sed comme ceci: sed -e 's/[ 0123456789\n]*//g' fichier.txt > result.txt mais le sauts de lignes ne sont pas... www.commentcamarche.net/forum/affich-1040817-commande-sed-et-passage-a-la-ligne
[DoS]cherche commande pour partager 1 dossier (Résolu)Bonjour, je cherche la commande pour partager un dossier (et le départager) par commandes dos pour créer un *.bat et l'automatiser. Merci d'avance Keido www.commentcamarche.net/forum/affich-2982764-dos-cherche-commande-pour-partager-1-dossier
Télécharger Maintenance Parts BinMaintenance Parts Bin est un logiciel de gestion de stocks. Avec cet outil vous pouvez effectuer un suivi sur les opérations courantes des gestions stocks comme l’approvisionnement des commandes, le suivi des entrées et sorties de stocks,... www.commentcamarche.net/telecharger/telecharger-34060131-maintenance-parts-bin
100.000 commandes sur Laredoute.fr le premier jour des soldes(Paris - Relax news) - Mercredi 25 juin, premier jour des soldes d'été, le site Laredoute.fr a enregistré 100.000 commandes, soit 25% de plus que pour les soldes d'été 2007. Le site du vépéciste a été leader des soldes sur Internet, en particulier... www.commentcamarche.net/actualites/100-000-commandes-sur-laredoute-fr-le-premier-jour-des-soldes-5846946-actualite.php3