Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Autres systèmes > Unix

Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix

Réponse
 
Outils de la discussion
Vieux 10/10/2008, 14h22   #1 (permalink)
Futur Membre du Club
 
Date d'inscription: avril 2006
Messages: 32
Par défaut [awk] Problème de regexp

Bonjour,
J'essaie de convertir un fichier ldif en csv avec un script awk, mais je bloque sur une erreur de syntaxe.

Voilà le code de mon script awk :
Code :
        function add_object() {
            if(typeObject="person")
                printf("%s:%s:%s\n", lName, lCity, lMail) > "data.csv"
        }
        BEGIN {
            typeObject = ""
            lName = ""
            lCity = ""
            lMail = ""
        }

        {
            /^dn:/ { typeObject = $2 }
            split(typeObject,tab,",")
            typeObject=tab[2]
            sub("/ou=/","",typeObject)

            print "DEBUG typeObject=" typeObject

            /^name:/ { lName = $2 }
            /^city:/ { lCity = $2 }
            /^mail:/ { lMail = $2 }

            add_object()

            typeObjet = ""
            lName = ""
            lCity = ""
            lMail = ""
        }

        END {
        }
- Un exemple de données de mon fichier ldif :

Code :
dn: id=1515000013,ou=person,o=myldapdirectory
name: p1
city: Here
mail: test@mail.com

dn: id=151506543,ou=other,o=myldapdirectory
datavalue: AAAjjjjjj

dn: id=1515000013,ou=other4,o=myldapdirectory
code: 54515155

dn: id=1515054451500013,ou=person,o=myldapdirectory
name: person2
city: Here
mail: mymail@me.com
Lorsque j'exécute le script, j'ai cette erreur :
Code :
 syntax error The source line is 14.
 The error context is
                        {   /^dn:/ >>>  { <<<  typeObject = $2 }
 awk: The statement cannot be correctly parsed.
 The source line is 14.
 syntax error The source line is 20.
Je pense que ca vient de ma regexp, mais j'ai consulté le manuel, et l'exemple donné est conforme a ce que j'ai écrit, donc je ne comprends pas trop.

Merci d'avance pour votre aide.
foobar42 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/10/2008, 16h56   #2 (permalink)
Membre éprouvé
 
Avatar de jlliagre
 
Date d'inscription: juin 2007
Localisation: Paris
Messages: 414
Par défaut

/^dn:/ doit être en dehors d'un bloc "{ ... }" puisque c'est une condition d'exécution d'un bloc.

Idem pour name, city et mail.
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/10/2008, 08h58   #3 (permalink)
Futur Membre du Club
 
Date d'inscription: avril 2006
Messages: 32
Par défaut

Ok, c'était effectivement la source de l'erreur.

Merci beaucoup
foobar42 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS LINUX PROFESSIONNELFAQ LINUXTUTORIELS LINUXLIVRES LINUXLINUX TVUNIXGTK+QtAPACHE

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Autres systèmes > Unix



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide


Fuseau horaire GMT +1. Il est actuellement 13h24.


Publiez vos articles, tutoriels et cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter
Copyright 2000-2008 www.developpez.com - Legal informations