我需要对已删除的所有用户进行备份,因此我有 1 个文件用于备份,另一个文件用于要备份的用户列表。我希望它使用 awk 来检索详细信息,并且希望在 awk 内部执行此操作,而不需要 while 条件。
注意:我们正在 Linux 环境下工作。
第一个文件
dn: uid=testuser1,ou=people,ou=identities
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
dn: uid=testuser1,ou=people,ou=identities
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
第二个文件
dn: uid=testuser1,ou=people,ou=identities
我用过下面的但是太慢了
while read line
do
delcommand=" awk '/"$line"/,/pattern|^$/' backup.ldif >> backupfiledeleted.txt
eval "$delcommand"
done < listtodelete.txt
预计为用户打印一组详细信息:
dn: uid=testuser1,ou=people,ou=identities
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
在读取备份文件时,您可以创建一个空行,即
"\n\n"
,作为记录分隔符,并使用换行符作为字段分隔符,这样您就可以轻松输出空行分隔的记录,而无需while
循环:
NR == FNR {
a[$0]
next
}
FNR == 1 {
RS = "\n\n"
FS = "\n"
}
$1 in a
用途:
awk -f program.awk backupfiledeleted.txt backup.ldif