2013-07-31 1 views
1

Personnes J'ai besoin d'ajouter une série d'entrées sur un ldap basé sur une liste d'enregistrements de 10k. J'ai le code suivant:Génération de Ldifs avec l'aide de AWK (impossible d'analyser le fichier d'entrée)

awk -v uid=999905284 ' 
{ 
print "dn: uid="$0",ou=aaa,ou=bbb,dc=br\n 
uid: "$0"\n 
sn: "$0"\n 
cn: "$0"\n 
mail: "$0"@grupos.a.br\n 
description: "$0"\n 
phpgwAccountType: l\n 
phpgwAccountStatus: A\n 
uidNumber: "uid++"\n 
gidNumber: 0\n 
deliveryMode: forwardOnly\n 
accountStatus: active\n 
defaultMemberModeration: 1\n" 
}' list 

L'entrée de la liste est la suivante:

list-a 
list-b 
... 
list-n 

Exemple de sortie prévue:

dn: uid=list-a,ou=aaa,ou=bbb,dc=br\n 
uid: list-a 
sn: list-a 
cn: list-a 
mail: [email protected] 
description: list-a 
phpgwAccountType: l 
phpgwAccountStatus: A 
uidNumber: 999905284 
gidNumber: 0 
deliveryMode: forwardOnly 
accountStatus: active 
defaultMemberModeration: 1 


dn: uid=list-b,ou=aaa,ou=bbb,dc=br\n 
uid: list-b 
sn: list-b 
cn: list-b 
mail: [email protected] 
description: list-b 
phpgwAccountType: l 
phpgwAccountStatus: A 
uidNumber: 999905285 
gidNumber: 0 
deliveryMode: forwardOnly 
accountStatus: active 
defaultMemberModeration: 1 

Je me attends à une sortie où l'Offre 0 $ serait remplacé par le nom des listes tu ne travaille pas.

Merci d'avance!

+1

Comment est-il ne fonctionne pas? Avez-vous des erreurs? Sortie inattendue – larsks

+1

+1 pour une bonne première question avec des données d'échantillon, sortie requise. Montrez-nous simplement la sortie actuelle de la machine ou les erreurs. OU l'un de vos fichiers est-il créé sur MSWindows, puis déplacé vers Linux? Si oui, alors 'dos2unix myScript myDataFile ....'. Bonne chance! – shellter

Répondre

1

awk ne vous permet pas de diviser des chaînes entre guillemets sur deux lignes, sauf si vous marquez chaque ligne comme une continuation en mettant un \ à la fin. Puisque vous êtes déjà incluez \n dans la sortie explicitement, vous pouvez simplement arranger les choses en mettant les marqueurs de continuation partout une chaîne entre guillemets est divisé:

awk -v uid=999905284 ' 
{ 
print "dn: uid="$0",ou=aaa,ou=bbb,dc=br\n\ 
uid: "$0"\n\ 
sn: "$0"\n\ 
cn: "$0"\n\ 
mail: "$0"@grupos.a.br\n\ 
description: "$0"\n\ 
phpgwAccountType: l\n\ 
phpgwAccountStatus: A\n\ 
uidNumber: "uid++"\n\ 
gidNumber: 0\n\ 
deliveryMode: forwardOnly\n\ 
accountStatus: active\n\ 
defaultMemberModeration: 1\n" 
}' list 
+0

Ne fonctionne toujours pas correctement. Quelque chose ne tourne pas rond awk: ./adiciona_listas_massa:2: awk -v uid = 999905284 ' awk: ./adiciona_listas_massa:2:^Erreur de syntaxe awk: ./adiciona_listas_massa:2: awk -v uid = 999905284' awk : ./adiciona_listas_massa:2:^char invalide '' 'dans l'expression J'ai cherché des caractères Unicode ou autre chose qui pourrait être le problème. Pas de chance. – vfbsilva

0

Oki j'appelais le script comme un script shell qui est un débutant erreur: propre script:

BEGIN {uid=999905284} 
{ 
print "dn: uid="$0"dc=br\n\ 
uid: "$0"\n\ 
givenName: MailList\n\ 
sn: "$0"\n\ 
cn: "$0"\n\ 
homeDirectory: /home/false\n\ 
loginShell: /bin/false\n\ 
mail: "$0"@lists.br\n\ 
description: "$0"\n\ 
admlista: [email protected]\n\ 
listPass: pass\n\ 
objectClass: posixAccount\n\ 
objectClass: inetOrgPerson\n\ 
objectClass: shadowAccount\n\ 
objectClass: phpgwAccount\n\ 
objectClass: top\n\ 
objectClass: person\n\ 
objectClass: organizationalPerson\n\ 
objectClass: mailman\n\ 
phpgwAccountType: l\n\ 
phpgwAccountStatus: A\n\ 
uidNumber: "uid++"\n\ 
gidNumber: 0\n\ 
deliveryMode: forwardOnly\n\ 
accountStatus: active\n\ 
defaultMemberModeration: 1\n" 
} 

appel approprié: aWK addlists -f listes

Questions connexes