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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
        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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 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.