シェルスクリプト - テキスト処理

シェルスクリプト - テキスト処理

LDAPでユーザーを更新するためのldif修正ファイルを作成したいと思います。

ldapのすべてのDnエントリのリストを含む入力ファイル(alluserdns.ldif)があります。

dn: [email protected], ou=persons,ou=pp,dc=abc,dc=com
dn: [email protected], ou=persons,ou=pp,dc=abc,dc=com
dn: [email protected], ou=persons,ou=pp,dc=abc,dc=com
dn: [email protected], ou=persons,ou=pp,dc=abc,dc=com

次の形式のファイルを作成したいと思います。

dn: [email protected], ou=persons,ou=pp,dc=abc,dc=com
changetype: modify
add: mail
mail: [email protected]

dn: [email protected], ou=persons,ou=pp,dc=abc,dc=com
changetype: modify
add: mail
mail: [email protected]

dn: [email protected], ou=persons,ou=pp,dc=abc,dc=com
changetype: modify
add: mail
mail: [email protected]

dn: [email protected], ou=persons,ou=pp,dc=abc,dc=com
changetype: modify
add: mail
mail: [email protected]

入力ファイルの各dnエントリのcn部分([Eメール保護])これをメール属性として使用します。

changetype: modify
add: mail
mail:

入力ファイルの各行の後に上記の3行を追加し、抽出されたcn値を使用します([Eメール保護]) が最後の行を形成します。

これまで、入力ファイルの各dnエントリの後に上記の3つの定数行を追加してみました。

sed -e 's/$/\n changetype: modify \n   add: mail \n    mail:/' -i alluserdns.ldif

各 DNS に対して得られる出力は次のとおりです。

     dn: [email protected], ou=persons,ou=pp,dc=abc,dc=com
     changetype: modify
     add: mail
     mail:

これで、cn部分を抽出してmail:属性の後の3行目に使用する必要があります。

ベストアンサー1

これはあなたに役立ちます:

sed -e 's/.*cn=\([^,]*\).*/&\nchangetype: modify \nadd: mail \nmail: \1/'

おすすめ記事