0

私のケースはこちらです。

#file_user を含むファイルがあります

mark
sebastian
lewis
shumacher
hulkenburg

Add.ldif を含む別のファイルがあります

dn: cn=salespartner,ou=Groups,o=company
changetype: modify
add: member
member: uid=user,ou=external,c=de,ou=People,o=company
member: uid=user,ou=external,c=de,ou=People,o=company
member: uid=user,ou=external,c=de,ou=People,o=company
member: uid=user,ou=external,c=de,ou=People,o=company

上記で、 uid=user をそれぞれのファイルのユーザー名に変更したい

dn: cn=typo3_frontend_global_salespartner,ou=Groups,o=company
changetype: modify
add: member
member: uid=mark,ou=external,c=de,ou=People,o=company
member: uid=sebastian,ou=external,c=de,ou=People,o=company
member: uid=lewis,ou=external,c=de,ou=People,o=company

これを使用してみましたが、上記の例を達成できませんでした。

#!/bin/bash
set -x
for q in `cat user`
do  sed 's/user/'${q}'/g' add.ldif > out
done 

これを行う方法を教えてください。その間、高度なbashスクリプトを理解します

これは、ldap での私の作業にとって非常に緊急です。

少し早いですがお礼を!!!!!プスパラジ

4

3 に答える 3

4

sedすべての行で同じ置換を行いたくないため、これにはおそらく最適なツールではありません。awkそれをより良くすることができます:

awk 'BEGIN { i = 0; j = 0; }
     FNR == NR { users[i++] = $0 }
     FNR != NR && /^member:/ && users[j] { sub("uid=user", "uid=" users[j++]); print }
     FNR != NR && !/^member:/ {print}' user add.ldif > out
于 2013-10-10T10:28:00.223 に答える
2

この awk は動作するはずです:

awk -F, 'FNR==NR{a[NR]=$1;next} $1~"user"{sub(/=user/, "=" a[++i], $1)} 1' OFS=, user add.ltif
changetype: modify
add: member
member: uid=mark,ou=external,c=de,ou=People,o=company
member: uid=sebastian,ou=external,c=de,ou=People,o=company
member: uid=lewis,ou=external,c=de,ou=People,o=company
member: uid=shumacher,ou=external,c=de,ou=People,o=company
于 2013-10-10T10:33:44.033 に答える