Cherche explication sur les Regular Expressions et sed

Cherche explication sur les Regular Expressions et sed - Linux et OS Alternatifs

Marsh Posté le 29-03-2002 à 18:15:22    

Voilà, en fait, g un pb dans ma lecture de rute (Rute User's Tutorial and Exposition)
 
En fait, dans la partie sur le scripting e la manipulation de chaînes, on lit ceci: lien
On tape:

Code :
  1. sed -e 's/\(<[^ ]*>\)\([ ]*\)\(<[^ ]*>\)/\3\2\1/g'


Eplication de l'auteur: Here sed is searching for the expression \<.*\>[ ]*\<.*\>. From the chapter on regular expressions, we can see that it matches a whole word, an arbitrary amount of whitespace, and then another whole word. The \( \) groups these three so that they can be referred to in <replace-text>. Each part of the regular expression inside \( \) is called a subexpression of the regular expression. Each subexpression is numbered--namely, \1, \2, etc. Hence, \1 in <replace-text> is the first \<[^ ]*\>, \2 is [ ]*, and \3 is the second \<[^ ]*\>.  
 
Je vous recommande de lire sur le lien, c plus beau (c le point 8.7)
 
MAIS mon pb est le suivant: je ne vois pas en quoi le paramètre de sed correspond à l'expression indiquée (avec la quelle je suis d'accord, si je me refère au chapitre adéqueat de rute. Du reste, il n'y a même pas de point....
et malgré un info sed, je capte aps :(
quelqu'un pour me sauver ?

 

[jfdsdjhfuetppo]--Message édité par Piksou--[/jfdsdjhfuetppo]


---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
Reply

Marsh Posté le 29-03-2002 à 18:15:22   

Reply

Marsh Posté le 30-03-2002 à 13:07:16    

personne ? :(


---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
Reply

Marsh Posté le 31-03-2002 à 04:17:38    

:cry:  :cry:  :cry:  :cry:


---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
Reply

Marsh Posté le 31-03-2002 à 10:35:34    

essaye d'aller voir sur irc sur un chan #linuxfr ou #linux, y a des  monstres la-dedans  ;)


---------------
SELECT girls FROM world WHERE passion="info";
Reply

Marsh Posté le 31-03-2002 à 13:56:36    

ouais mais bon, ici aussi :/
bon, vais envoyer un PM à ping :D


---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
Reply

Marsh Posté le 31-03-2002 à 19:06:41    

pik ben ouais t'as vu la tete de ta question  :heink:  
 
 
y'a personne qui veut repondre, la plupart des gens ne comprennent pas la question  :D
 
edit: merde c le pseudo du frangin  :fou:  :lol:

 

[jfdsdjhfuetppo]--Message édité par Hellfire--[/jfdsdjhfuetppo]


---------------
Why do black people only have nightmares? Because we shot the last one that had a dream
Reply

Marsh Posté le 31-03-2002 à 19:51:05    

ceux qui ne comprennent pas, c'est qu'ils n'ont pas la compétence pour me répondre...
Ceux suceptibles de pouvoir el faire comprendront parfaitment :na:
minuspluuuuuuuuuuuuuus :cry:


---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
Reply

Marsh Posté le 31-03-2002 à 23:07:19    

[:totozzz]  
 
cai encore ton pascal tout moche qui pue?

Reply

Marsh Posté le 31-03-2002 à 23:23:11    

Bah après essai, on dirait que [^ ] équivaut à un point, mais j'ai bien du mal à voir pourquoi. Et j'ai du mal à voir pourquoi ils n'utilisent pas un point (puisque ça marche).


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 01-04-2002 à 10:28:45    

Jeannot: nan, ça dépasse tès largement le niveau de l'école, ça ;)
C'est du loisirs (oui, je sai, g pas des loisirs normaux :D)
Jar Jar: merci bcp, du oup, g touvé : en fait, le truc, c que ^kekchose signidfie "tous les caracs sauf kekchose"
C truc doit donc vouloir dire "tout sauf expace", mais les crochets en plus, c bizarre...


---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
Reply

Marsh Posté le 01-04-2002 à 10:28:45   

Reply

Marsh Posté le 01-04-2002 à 12:35:49    

Piksou a écrit a écrit :

Jar Jar: merci bcp, du oup, g touvé : en fait, le truc, c que ^kekchose signidfie "tous les caracs sauf kekchose"
C truc doit donc vouloir dire "tout sauf expace", mais les crochets en plus, c bizarre...


Ah ben oui, je suis con... Je confonds encore le ^ du grep et celui des regexp...


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 01-04-2002 à 13:39:01    

cai comme en en c avec scanf
scanf( "[^abc]", nom_de_variable );  [:pyropsy]

Reply

Marsh Posté le 01-04-2002 à 13:51:13    

SirJeannot a écrit a écrit :

cai comme en en c avec scanf
scanf( "[^abc]", nom_de_variable );  [:pyropsy]


On peut utiliser des regexp dans les scanf ? Je tombe des nues, là. C'est la top classe !


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 01-04-2002 à 13:53:55    

je crois bien, aux dernieres nouvelles ca marchait avec un des mes programmes
 
par contre je ne savait pas que cette méthode avait un nom aussi savant  [:thesphinx]

Reply

Marsh Posté le 03-04-2002 à 12:39:16    

Hum, j'ai encore un prob :D
 
Voilà, je prends le fichier texte suivant:
 
Je fais un test
c drôle 192.168.123.1
non ?
si
vr ver vr erg  
 
et j'y applique la ligne de commande suivante:
 
cat test | sed -e '1,1D' |sed -e '2,5D' |sed -e 's/\(\<[^ ]*\>\)\(\<[ ]*\>\)\(\<[^ ]*\>\)\(\<[ ]*\>\)\(\<[^ ]\>\)/\5/g'
 
Mon but (pour l'instant) est d'extraire l'ip d'une carte d'un résultat de ifconfig.
Ici, j'ai cherché à isoler le 192.168.123.1 (mais a priori, on s'en fout: ça devrait marcher pareil pour tout)
Le cat marche, il affiche le fichier. Les deux premier sed aussi: seul la ligne 2 survit.
Mais le 3e est inopérant alors que je ne vois aps ce qui cloche: c'est la même logique que dans l'exemple, de rute (cf link) ou l'auteur extrait les tailles de fichier d'un ls.
en théorie, j'espérais le découpage suivant:
1: un mot ([^ ]*) (ici, c)
2: une suite d'espaces ([ ]*) (ici, un seul)
3: un mot ([^ ]*) (ici, drôle)
4: une suite d'espaces ([ ]*) (ici, un seul)
5: un mot ([^ ]*) (ici, l'adresse)
 
nous voilà au / n°2, j'affiche juste le 5, donc juste l'IP et voilà...
oui mais non !
il m'affiche toute la ligne :sweat:
pkoi ?

Reply

Marsh Posté le 04-04-2002 à 13:05:44    

tssss, pour troller sur mdk/deb ou vi/emacs, ya du monde mais pour me sortir de ma merde avec sed, ya plus personne :p

Reply

Marsh Posté le 04-04-2002 à 14:14:50    

Piksou a écrit a écrit :

tssss, pour troller sur mdk/deb ou vi/emacs, ya du monde mais pour me sortir de ma merde avec sed, ya plus personne :p  




 
Si tu posais tes questions clairement.
 
ici les \<\> (normallement délimiteur de mot pour certaines cregexp mais en sed je ne crois pas que ça marche...).
Essaie donc sans :
sed -e 's/\([^ ]*\)\([ ]*\)\([^ ]*\)\([ ]*\)\(\s*\)/\5/g'  
Tu peux aussi te passer de cat et tout regrouper dans un seul sed (pas besoin de faire 4 pipes).
 
Perl pow@ :
s:(\S+)(\s+)(\S+)(\s+)(\S+):\5:g

Reply

Marsh Posté le 04-04-2002 à 17:56:10    

Arsunik: je plaisantais ;) (y avait des smiles pour que ça soit clair :o)
je vais tester ta version sans les <>
pour regouper les sed, j'imagine, mais virer le cat, je vois pas. bof, je ferais un petit info sed...
merci anyway ;)
PS: c pas clair comme façon de poser mes questions ? trop long ? trop détaillé ? manque des trucs ?


---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
Reply

Marsh Posté le 04-04-2002 à 18:47:54    

Code :
  1. perl -e '($ip) = (`ifconfig eth0` =~ /inet addr:((?:\d+\.){3}\d+)/); print $ip;'

Reply

Marsh Posté le 05-04-2002 à 00:26:04    

tiens ya des hierogliphe sous linux?


---------------
Je suis perdus mais c'est pas grave
Reply

Marsh Posté le 05-04-2002 à 00:44:02    

y'a bien Ben harper ki a essayé de monter un cluster sous linux ! :D

Reply

Marsh Posté le 05-04-2002 à 00:59:31    

minusplus a écrit a écrit :

y'a bien Ben harper ki a essayé de monter un cluster sous linux ! :D  




 
ouui mais ben harper il y connais rien a linux :D alors tout compte fait il vas d'abord essayer de monter un dns :p


---------------
Je suis perdus mais c'est pas grave
Reply

Marsh Posté le 05-04-2002 à 01:01:41    

t'aimes avoir mal non ? [:dark_schneider]

Reply

Marsh Posté le 05-04-2002 à 01:06:27    

911GT3 a écrit a écrit :

t'aimes avoir mal non ? [:dark_schneider]  




hooo  oui :love: mount moa :D


---------------
Je suis perdus mais c'est pas grave
Reply

Marsh Posté le 05-04-2002 à 01:07:04    

:lol: kal band de moolz ! :D
 
 
 
 
(j'ai honte ! :/)
 
 
 
:D

Reply

Marsh Posté le 05-04-2002 à 01:09:28    

minusplus a écrit a écrit :

:lol: kal band de moolz ! :D
 
 
 
 
(j'ai honte ! :/)
 
 
 
:D  




 
t'es jaloux? t'en demande? combien de doigt :fuck:?
 
au fait au passage -+ dans la deb ya bien lylo pour le multi boot?


---------------
Je suis perdus mais c'est pas grave
Reply

Marsh Posté le 05-04-2002 à 01:14:08    

non, juste des sylex pour le faire sois même :o

Reply

Marsh Posté le 05-04-2002 à 01:15:23    

Mazee a écrit a écrit :

 
 
t'es jaloux? t'en demande? combien de doigt :fuck:?
 
au fait au passage -+ dans la deb ya bien lylo pour le multi boot?  




répète aprés moi : LA DEBIAN contient tout, la DEBIAN est tout !
 
 
 
:D

 

[jfdsdjhfuetppo]--Message édité par minusplus--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 05-04-2002 à 02:07:48    

répète aprés moi : LA DEBIAN contient tout, la DEBIAN est tout !


---------------
Je suis perdus mais c'est pas grave
Reply

Marsh Posté le 05-04-2002 à 08:52:52    

Rhhaaaaa, c le modo qui détourne mon topic, ou va-t-on ? :sarcastic:
Bon, pour le chaine, ça marche sans les \<\>, donc, je suis content
mais pas moyen de fusionner les 3
 sed: je peux fusionner les 2 derniers avec un ; mais qd je fais pareil avec la premier, ça me retourne plus rien :/
ça, ça marche:
cat test | sed -e '1,1D' |sed -e '2,5D' |sed -e 's/\([^ ]*\)\([ ]*\)\([^ ]*\)\([ ]*\)\([^ ]\)/\5/g'  
ça aussi:
cat test | sed -e '1,1D' |sed -e '2,5D;s/\([^ ]*\)\([ ]*\)\([^ ]*\)\([ ]*\)\([^ ]\)/\5/g'  
mais ça non:
cat test | sed -e '1,1D;2,5D;s/\([^ ]*\)\([ ]*\)\([^ ]*\)\([ ]*\)\([^ ]\)/\5/g'
 
PS: en fait, le cat est mort aussi, mais ça me lourde de modifier ça aussi: je poste depuis l'EPF et g pas ma ligne de commande sous la main :sweat:
 
-+: la deb contient tout, heu, ouais, mais pas la potatoe alors ;)

 

[jfdsdjhfuetppo]--Message édité par Piksou--[/jfdsdjhfuetppo]


---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
Reply

Marsh Posté le 05-04-2002 à 14:21:41    

cat toto | sed ...   <==> sed ... toto
 
sed -n "3s/toto/titi/;3p"

Reply

Marsh Posté le 05-04-2002 à 14:27:11    

moi j'aime pas sed passke j'ai pas trouvé de doc décente sur sed et la manière qu'il a de gérer les regexp ! :/

Reply

Marsh Posté le 05-04-2002 à 20:16:03    

arsunik: ouais, ça, j'avais réussi, mon prblème actuel est que j'ai réussi à fusionner les deux derniers sed mais aps les 3 ensemble
je faisais
sed -e 'bla1' fichier | sed -e 'bla2' | sed -e 'bla3'
now, qd je fais:
sed -e 'bla1' fichier | sed -e 'bla2;bla3'
ça marche
mais qd je rajoute le premier avec un ; aussi, ça merde.
en fait, c aps si grave, ça marche (et j'en suis pas peu fier vu mon niveau :o) mais mais c laid de laisser 2 sed à la suite avec un | (et j'aime aps ne aps comprendre :/)


---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed