我有一个 ldif 导出,我想为每个 ldif 条目构建一个一行输出文件;该行包含特定顺序的各种属性值。
因此,命令应该解析以 dn: 属性开头的每个 ldif 条目并评估各种属性,提取它们的值,然后将分隔行打印到输出文件(例如,uid|cn|sn|givenName|building|title|manager --- 像这样)。
Linux 命令或 perl 可以工作,感谢您的想法。
答案1
使用现有模块编写 Perl 脚本来解析 LDIF(例如网络::LDAP::LDIF) 并根据需要打印。
例子:
use 5.012;
use Net::LDAP::LDIF;
my $ldif = Net::LDAP::LDIF->new( "file.ldif", "r", onerror => 'undef' );
while ( not $ldif->eof ) {
my $entry = $ldif->read_entry;
if ( $ldif->error ) {
say "Error msg: ", $ldif->error;
say "Error lines:\n", $ldif->error_lines ( );
}
say(join('|',
$entry->get_value('uid'),
$entry->get_value('cn'),
$entry->get_value('sn')
));
}
$ldif->done;