2013-07-31 2 views
1

사용자 10k 레코드 목록을 기반으로 LDAP에 항목의 세리에를 추가해야합니다. 나는 다음과 같은 코드가 있습니다 :AWK에서 도움말을 사용하여 Ldif 생성 (입력 파일을 구문 분석 할 수 없음)

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 

다음과 같이 목록의 입력은 다음과 같습니다

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

샘플 예상 출력 : 나는 $ 0 대체 될 출력을 기대

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 

을 목록의 이름으로 너는 작동하지 않는다.

미리 감사드립니다.

+1

나열 awk가? 오류가 있습니까? 예기치 않은 결과가 나왔습니까? – larsks

+1

+1 샘플 데이터와 함께 좋은 첫 번째 질문, 필요한 출력. 현재 시스템 출력 또는 오류를 표시하십시오. 또는 MSWindows에서 생성 된 파일 중 하나라도 Linux로 옮겼습니까? 그렇다면'dos2unix myScript myDataFile ....'. 행운을 빕니다! – shellter

답변

1

awk 는 말에 \을 넣어 계속 각 라인을 표시하지 않는 한, 두 줄 이상 인용 된 문자열을 분할 할 수 없습니다.

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

여전히 제대로 작동하지 않습니다. ./adiciona_listas_massa:2 : AWK -v UID = 999,905,284 ' AWK : ./adiciona_listas_massa:2^구문 오류 AWK : ./adiciona_listas_massa:2 : AWK -v UID = 999,905,284' AWK 뭔가 AWK 어긋나있다 : ./adiciona_listas_massa:2 :^잘못된 문자 '' '가 표현식에 있습니다. 유니 코드 문자 또는 다른 문제를 찾았습니다. 불운. – vfbsilva

0

오키 내가 초보자는 쉘 스크립트와 같은 스크립트를 호출했다 : 이미 명시 적으로 출력 \n을 포함하고 있기 때문에, 당신은 단지 모든 곳에서 인용 된 문자열을 계속 마커를 넣어 물건을 고칠 수있는 것은 분할 오류 : 적절한 스크립트를

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" 
} 

적절한 전화 : 은 -f addlists를 어떻게 작동하지 않는