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 06/01/2009, à 22:19

Père Ubuntu

Commande sed

Bonjour
je n'ai encore jamais utilisé la commende sed, et bien que j'ai lu plusieurs tutos dessus, je butte...
En fait je voudrais isoler une chaine de carractères qui varie, mais qui est entourée par d'autres chaines de carractères non variantes.
Pour être plus clair, je donne un exemple :

Fichier texte d'origine

<plop> 'oki foilirhja654rgerpo krtg6 z5er647erf' <truc>
<plop> 'pokzheduijnzdoi xzkjnoze5ezjhb zoedij' <truc>
<plop> 'p6564fgkjsdfduijnzdoi xzkjnoze5ezjhb zoedij' <truc>
<plop> 'podfdoi xzkjnoze5ezjhb zoedij' <truc>
<plop> 'oijdeduijnzdoi xzkjnoze5ezjhb zoedij' <truc>
<plop> 'pokzheduqdsqsijnzdoi xzkjnozqdsjhb zoedij' <truc>

Et je voudrais obtenir en output :

oki foilirhja654rgerpo krtg6 z5er647erf
pokzheduijnzdoi xzkjnoze5ezjhb zoedij
p6564fgkjsdfduijnzdoi xzkjnoze5ezjhb zoedij
podfdoi xzkjnoze5ezjhb zoedij
oijdeduijnzdoi xzkjnoze5ezjhb zoedij
pokzheduqdsqsijnzdoi xzkjnozqdsjhb zoedij

C'est bien sed que je dois utiliser, non ?
Si quelqu'un peut me mettre sur la voie...


<87><91>¢^_õRÏÕgæå<8f>c<9d>^LjH{<97>Ä<9c>^TTMw<80><87>þ2!gBªûtÖª<8e>uÌOn<80><9d>`ÉÚ1þAïÜ<8b>+sÏ^A<94>Û"Ó^TÓ^MÕð<80>ºÆ©±Bl<8d>¥^R<98>#<8c>æpL<81>^\xc¼<9a>¶)<89>­¥L<9f>(ü<95>¯÷<99>^W^_÷ÜL(1<9c>g"Ã(^B­c<90>°Éà$Ñ^DWG`xa <97>½^O^X¹rM*^DycB£^S¿^UWNôC=<8c>Ê ?x¡"p«

Hors ligne

#2 Le 06/01/2009, à 22:37

abetsic

Re : Commande sed

Bonsoir,

Oui sed me semble bien adapté pour ce boulot, quelque chose du genre dois fonctionner (pas testé)

sed 's/<plop> \(.*\) <truc>/\1/'

Ce qui est entre les parenthèses (échapées par des \ ) est retenue pour être réutilisé du côté droit de la commande "S" de sed.

Sinon tu peux faire quelque chose du genre :

 sed 's/<plop> //' | sed 's/ <truc>//'

qui remplace <plop> et <truc> par rien.

Hors ligne

#3 Le 06/01/2009, à 22:43

Totor

Re : Commande sed

bonsoir,

sed 's/^<plop> \'\([^\']*\)\' <truc>$/\1/' <nomfichier>

par contre, si la partie variable peut contenir le caractère ' :

sed 's/\(^<plop> \'\|\' <truc>$\)//g' <nomfichier>

dans la première méthode, on remplace la ligne par le texte se trouvant entre <plop> ' et ' <truc>

la seconde a pour objectif de remplacer ^<plop> ' ou ' <truc>$ par rien (^ = début de lligne et $ = fin de ligne)


-- Lucid Lynx --

Hors ligne

#4 Le 06/01/2009, à 22:50

Père Ubuntu

Re : Commande sed

Merci, je vais tester ça...


<87><91>¢^_õRÏÕgæå<8f>c<9d>^LjH{<97>Ä<9c>^TTMw<80><87>þ2!gBªûtÖª<8e>uÌOn<80><9d>`ÉÚ1þAïÜ<8b>+sÏ^A<94>Û"Ó^TÓ^MÕð<80>ºÆ©±Bl<8d>¥^R<98>#<8c>æpL<81>^\xc¼<9a>¶)<89>­¥L<9f>(ü<95>¯÷<99>^W^_÷ÜL(1<9c>g"Ã(^B­c<90>°Éà$Ñ^DWG`xa <97>½^O^X¹rM*^DycB£^S¿^UWNôC=<8c>Ê ?x¡"p«

Hors ligne

#5 Le 06/01/2009, à 23:05

Père Ubuntu

Re : Commande sed

Euh... je regrette si c'est une erreur débile de ma part (j'apprends, j'apprends...), mais quand j'applique ces commandes, je tombe sur un truc bizare, qui ne bouge pas, et que je suis obbligé de quitter à coup de ^C :

 
ego@Laptop:~$ sed 's/^<plop> \'\([^\']*\)\' <truc>$/\1/' ./1
>

Edit: enfin bon, pour l'instant, dodo.

Dernière modification par Père Ubuntu (Le 06/01/2009, à 23:11)


<87><91>¢^_õRÏÕgæå<8f>c<9d>^LjH{<97>Ä<9c>^TTMw<80><87>þ2!gBªûtÖª<8e>uÌOn<80><9d>`ÉÚ1þAïÜ<8b>+sÏ^A<94>Û"Ó^TÓ^MÕð<80>ºÆ©±Bl<8d>¥^R<98>#<8c>æpL<81>^\xc¼<9a>¶)<89>­¥L<9f>(ü<95>¯÷<99>^W^_÷ÜL(1<9c>g"Ã(^B­c<90>°Éà$Ñ^DWG`xa <97>½^O^X¹rM*^DycB£^S¿^UWNôC=<8c>Ê ?x¡"p«

Hors ligne

#6 Le 06/01/2009, à 23:21

Totor

Re : Commande sed

désolé...

sed "s/^<plop> \'\([^\']*\)\' <truc>$/\1/" <nomfichier>
sed "s/\(^<plop> \'\|\' <truc>$\)//g" <nomfichier>

-- Lucid Lynx --

Hors ligne

#7 Le 06/12/2010, à 15:47

rkusnik

Re : Commande sed

Bonjour,
J'ai trouvé un manuel de sed tres interressant ici => http://man2linux.blogspot.com/search/label/sed

big_smile

Dernière modification par rkusnik (Le 06/12/2010, à 15:48)

Hors ligne