Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/11/2006, 09h34   #1
Rédacteur/Modérateur
 
Avatar de Michaël
 
Michaël Todorovic
Ingénieur systèmes et réseaux
Inscription : juillet 2003
Messages : 3 493
Détails du profil
Informations personnelles :
Nom : Michaël Todorovic
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2003
Messages : 3 493
Points : 5 899
Points : 5 899
Par défaut Mettre une parenthèse dans une regex

bonjour,
j'ai une ligne
Code :
foo,mkdirhier(bar),machin,dog:xorg
qui peut être également
Code :
foo,mkdirhier(bar;truc;bidule),machin,dog:xorg
mon but est de trouver mkdirhier dedans et de regarder s'il est suivi d'une parenthèse ou pas et d'extraire ce qu'il y a dans la parenthèse. pour choper mkdirhier, je le fais dans le for avec un match
Code :
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/awk -f
 
{
        split ($0, tmp, ":")
        package[1]=tmp[2]
        print("paquet : ",package[1])
        nb_fichier = split(tmp[1],fichiers,",")
        for ( i=1 ; i<=nb_fichier ; ++i ) {
                    print fichiers[i]
                    where = match(fichiers[i],"^mkdirhier")
        }
}
ensuite, je peux faire un if pour tester si match a trouvé quelque chose ou pas. mon problème est pour la regex. je voudrais chercher si mkdirhier est suivi d'un lot de parenthèse ou pas. j'ai essayé la regex "^mkdirhier(.*)" mais ça ne marche pas, ça me dit qu'il trouve même s'il n'y a rien j'ai essayé d'en mettre une seule et il me dit erreur de syntaxe. j'ai essayé d'échapper les parenthèses (même si ce ne sont pas des caractères spéciaux) mais ça n'a pas marché non plus

bref, j'ai plus trop d'idées.
est-ce que c'est faisable et si oui, comment ?

beaucoup
Michaël est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2006, 10h06   #2
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
Hello,

L'option '-f' permet de lire les instruction à partir d'un fichier, ca ne serait pas plutot '-F' (définir le délimiteur) que tu voudrais utiliser ?

++
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 18h15   #3
Rédacteur/Modérateur
 
Avatar de Michaël
 
Michaël Todorovic
Ingénieur systèmes et réseaux
Inscription : juillet 2003
Messages : 3 493
Détails du profil
Informations personnelles :
Nom : Michaël Todorovic
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2003
Messages : 3 493
Points : 5 899
Points : 5 899
je suis obligé de mettre -f sinon le script ne marche

le -F ne change rien et m'ajoute des erreurs comme quoi ma regex est pas bonne. j'ai également essayé de mettre la regex entre " " avant le programme mais ça ne change rien

je précise que awk et moi, ça fait deux. j'ai essayé de doubler la parenthèse mais il veut rien savoir
Michaël est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 19h50   #4
Rédacteur/Modérateur
 
Avatar de Michaël
 
Michaël Todorovic
Ingénieur systèmes et réseaux
Inscription : juillet 2003
Messages : 3 493
Détails du profil
Informations personnelles :
Nom : Michaël Todorovic
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2003
Messages : 3 493
Points : 5 899
Points : 5 899
j'ai trouvé

il faut échapper la parenthèse et échapper l'échappement. donc ma ligne
Citation:
other_pkg = match(fichiers[i],"^mkdirhier")
est désormais
Citation:
other_pkg = match(fichiers[i],"^mkdirhier\\(.*\\)")
Michaël est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h34.


 
 
 
 
Partenaires

Hébergement Web