Estou fazendo algumas substituições de espaço reservado em vários arquivos que estou alimentando para ldapadd
, para adicionar novas entradas a um diretório LDAP:
sed \
-e 's/%%FOO%%/whatever/g' \
-e 's/%%BAR%%/other thing/g \
file1.ldif.template \
file2.ldif.template \
| ldapadd -x -D 'cn=admin,dc=example,dc=com' -W
O problema que estou tendo com isso é que, se não houver uma linha vazia no final de file1.ldif.template
, o primeiro registro em file2
será concatenado ao último registro em file1
e em ldif
arquivos diferentes registros devem ser separados por pelo menos 1 nova linha.
É claro que eu poderia adicionar uma linha vazia no final de file1
, mas é muito fácil falhar no futuro se algum outro desenvolvedor (ou seus editores) removerem as novas linhas finais.
Então, para resumir. Saída sed atual (simplificada):
dn: cn=record1_file1,dc=example,dc=com
cn: record1_file1
dn: cn=record2_file1,dc=example,dc=com
cn: record2_file1
dn: cn=record1_file2,dc=example,dc=com
cn: record1_file2
dn: cn=record2_file2,dc=example,dc=com
cn: record2_file2
Saída desejada (simplificada):
dn: cn=record1_file1,dc=example,dc=com
cn: record1_file1
dn: cn=record2_file1,dc=example,dc=com
cn: record2_file1
dn: cn=record1_file2,dc=example,dc=com
cn: record1_file2
dn: cn=record2_file2,dc=example,dc=com
cn: record2_file2
Estou trabalhando no Linux (fedora 21) usando o GNU sed. Portabilidade não é uma preocupação (mas eu prefiro uma solução portátil sobre uma solução GNU).