私はこれにかなり慣れていないので、しばらくお待ちいただきありがとうございます
何百もの値を含むテキスト ファイルがあり、そこから ldif テンプレートを作成したいと考えています。たとえば、ファイルexample1.txtには
**Consumer1**
**Consumer2**
そしてldif.txtには
***dn: ,cn=Insert,o=Insert
uid:
userPassword:
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
businessCategory:
sn:
cn:***
***dn: ,cn=Insert,o=Insert
uid:
userPassword:
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
businessCategory:
sn:
cn:***
この例では、example1.txt と sed をループして、最初に "dn:" に遭遇したときにそれを "dn:consumer1" に置き換え、次に 2 番目の "dn:consumer2" などに置き換えます。後はこんな感じに
*dn:**consumer1** ,cn=Insert,o=Insert
uid:
userPassword:
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
businessCategory:
sn:
cn:*
*dn:**consumer2** ,cn=Insert,o=Insert
uid:
userPassword:
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
businessCategory:
sn:
cn:*
私はこれを試しましたが、ファイルをループして、すべてのエントリを 1 ではなく 2 ではなく dn:consumer2 に置き換えます。
for i in `cat example1.txt`
do
sed "s/dn:/dn: $i/" ldif.txt > hello.txt
done
これは以下を出力します
*dn:**consumer2** ,cn=Insert,o=Insert
uid:
userPassword:
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
businessCategory:
sn:
cn:*
*dn:**consumer2** ,cn=Insert,o=Insert
uid:
userPassword:
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
businessCategory:
sn:
cn:*
最初のヒットなどを得るために、段階的にループして前後に置換する方法はありますdn:consumer1, 2nd hit dn:consumer2
か?