Cherche explication sur les Regular Expressions et sed - Linux et OS Alternatifs
Marsh Posté le 30-03-2002 à 13:07:16
personne ?  
 
Marsh Posté le 31-03-2002 à 04:17:38
 
   
   
   
 
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   
 
Marsh Posté le 31-03-2002 à 13:56:36
ouais mais bon, ici aussi  
 
bon, vais envoyer un PM à ping  
 
Marsh Posté le 31-03-2002 à 19:06:41
pik ben ouais t'as vu la tete de ta question   
  
 
 
y'a personne qui veut repondre, la plupart des gens ne comprennent pas la question   
 
 
edit: merde c le pseudo du frangin   
   
 
[jfdsdjhfuetppo]--Message édité par Hellfire--[/jfdsdjhfuetppo]
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  
 
minuspluuuuuuuuuuuuuus  
 
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).
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  )
) 
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... 
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...
Marsh Posté le 01-04-2002 à 13:39:01
cai comme en en c avec scanf 
scanf( "[^abc]", nom_de_variable );  ![[:pyropsy] [:pyropsy]](https://forum-images.hardware.fr/images/perso/pyropsy.gif) 
 
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 !
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] [:thesphinx]](https://forum-images.hardware.fr/images/perso/thesphinx.gif) 
 
Marsh Posté le 03-04-2002 à 12:39:16
Hum, j'ai encore un prob  
 
 
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  
 
pkoi ? 
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  
 
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   | 
 
 
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
\S+)(\s+)(\S+)(\s+)(\S+):\5:g 
Marsh Posté le 04-04-2002 à 17:56:10
Arsunik: je plaisantais  (y avait des smiles pour que ça soit clair
 (y avait des smiles pour que ça soit clair  )
) 
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 ? 
Marsh Posté le 04-04-2002 à 18:47:54
| Code : 
 | 
Marsh Posté le 05-04-2002 à 00:26:04
tiens ya des hierogliphe sous linux?
Marsh Posté le 05-04-2002 à 00:44:02
y'a bien Ben harper ki a essayé de monter un cluster sous linux !  
 
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 !   | 
 
 
ouui mais ben harper il y connais rien a linux  alors tout compte fait il vas d'abord essayer de monter un dns
 alors tout compte fait il vas d'abord essayer de monter un dns  
 
Marsh Posté le 05-04-2002 à 01:06:27
| 911GT3 a écrit a écrit  : t'aimes avoir mal non ? ![[:dark_schneider] [:dark_schneider]](https://forum-images.hardware.fr/images/perso/dark_schneider.gif)  | 
 
hooo  oui  mount moa
 mount moa  
 
Marsh Posté le 05-04-2002 à 01:09:28
| minusplus a écrit a écrit  :  kal band de moolz !   (j'ai honte !  )   | 
 
 
t'es jaloux? t'en demande? combien de doigt  ?
? 
 
au fait au passage -+ dans la deb ya bien lylo pour le multi boot? 
Marsh Posté le 05-04-2002 à 01:15:23
| Mazee a écrit a écrit  : t'es jaloux? t'en demande? combien de doigt  ? 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 ! 
 
 
  
 
[jfdsdjhfuetppo]--Message édité par minusplus--[/jfdsdjhfuetppo]
Marsh Posté le 05-04-2002 à 02:07:48
répète aprés moi : LA DEBIAN contient tout, la DEBIAN est tout !
Marsh Posté le 05-04-2002 à 08:52:52
Rhhaaaaa, c le modo qui détourne mon topic, ou va-t-on ?  
 
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  
 
 
-+: la deb contient tout, heu, ouais, mais pas la potatoe alors  
 
[jfdsdjhfuetppo]--Message édité par Piksou--[/jfdsdjhfuetppo]
Marsh Posté le 05-04-2002 à 14:21:41
cat toto | sed ...   <==> sed ... toto 
 
sed -n "3s/toto/titi/;3p" 
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 !  
 
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  ) mais mais c laid de laisser 2 sed à la suite avec un | (et j'aime aps ne aps comprendre
) mais mais c laid de laisser 2 sed à la suite avec un | (et j'aime aps ne aps comprendre  )
) 
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:
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