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 > Linux > Applications > Shell

Shell Vos questions sur l'utilisation des commandes shell

Réponse
 
Outils de la discussion
Vieux 31/07/2008, 20h41   #1 (permalink)
Invité de passage
 
Date d'inscription: juillet 2008
Messages: 3
Par défaut AWK: problème de conversion de fichier LDIF

Bonjour,

J'ai un petit problème pour convertir un fichier LDIF généré de LDAP:


Le fichier bb.ldif contient les informations suivantes:

dn: cn=10,ou=work,o=dom.com
cn: denis.vezina@dom.com
sn: vezina
givenName: denis
mail: denis.vezina@dom.com
displayName: denis vezina

dn: cn=20,ou=work,o=dom.com
cn: jean.paul@dom.com
sn: Paul
givenName: jean
mail: jean.paul@dom.com
displayName: jean paul

dn: cn=30,ou=work,o=dom.com
cn: isabelle.didi@dom.com
sn: didi
givenName: isabelle
mail: isabelle.didi@dom.com
displayName: isabelle didi

dn: cn=40,ou=work,o=dom.com
cn: alain.papa@dom.com
sn: papa
givenName: alain
mail: alain.papa@dom.com
displayName: alain papa

J'utilise un fichier awk nommé book.awk

function print_user()
{
if(cn1 != "")
{
printf("%s:%s:%s:%s:%s:%s", cn1,cn2,sn1,givenName1,mail1,displayName1)
printf("\n")
}
}

BEGIN {
cn1 = ""
cn2 = ""
sn1 = ""
givenName1 = ""
mail1 = ""
displayName1 = ""

}
/^dn/ {cn1=$2}
/^cn/ {cn2=$2}
/^sn/ {sn1=$2}
/^givenName/ {givenName1=$2}
/^mail/ {mail1=$2}
/^displayName/ {displayName1=$2" " $3}
/^dn/ {
print_user()
cn1= ""
cn2 = ""
sn1 = ""
givenName1 = ""
mail1 = ""
displayName1 = ""
}
END {
print_user()
}


Quand j'exécute la commande suivante:

awk -f book.awk bb.ldif >tata.txt

J'ai le résultat erroné comme suit:

cn=10,ou=work,o=dom.com:::::
cn=20,ou=work,o=dom.com::vezina:denis:denis.vezina@dom.com:denis vezina
cn=30,ou=work,o=dom.com:aul:jean:jean.paul@dom.com:jean paul
cn=40,ou=work,o=dom.com::didi:isabelle:isabelle.didi@dom.com:isabelle didi

Certainement mon fichier awk est erroné. Peut-il quelqu'un m'aider à régler ce problème? ça sera apprécié.
Merci beacoup,


Haydar
haydar68 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/08/2008, 05h55   #2 (permalink)
Invité de passage
 
Date d'inscription: juillet 2008
Messages: 3
Par défaut Solution

Voici la solution qui m'a été fourni par un autre site:

Le fichier awk doit être comme suit:

function print_user()
{
if(cn!="")
{
printf("%s:%s:%s:%s:%s:%s\n", dn,cn,sn,givenName,mail,displayName)
}
}

BEGIN {
dn = ""
cn = ""
sn = ""
givenName = ""
mail = ""
displayName = ""
}
/^dn/ {ndn=$2}
/^cn/ {cn=$2}
/^sn/ {sn=$2}
/^givenName/ {givenName=$2}
/^mail/ {mail=$2}
/^displayName/ {displayName=$2" "$3}
/^dn/ {
print_user()
dn= ndn
cn = ""
sn = ""
givenName = ""
mail = ""
displayName = ""
}
END {
print_user()
}
haydar68 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/08/2008, 15h48   #3 (permalink)
Invité de passage
 
Date d'inscription: juillet 2008
Messages: 3
Par défaut

Voici une autre solution au problème.

awk -F': |\n' '{print $2,$4,$6,$8,$10}' RS= OFS=: file
haydar68 est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Linux > Applications > Shell



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 01h55.


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