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 );
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
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
Marsh Posté le 04-04-2002 à 17:56:10
Arsunik: je plaisantais (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
Marsh Posté le 05-04-2002 à 01:06:27
911GT3 a écrit a écrit : t'aimes avoir mal non ? |
hooo oui 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 )
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