如何解析 ldif 导出的属性值

如何解析 ldif 导出的属性值

我有一个 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;

相关内容