我有两个包含以下内容的文件
File1中
dn:cn = Abcd
对象类:
objectClass:top
cn:Abcd
档案2
dn:cn = Abcd
对象类:
objectClass:top
AdminDevType:
ConfigID:Abcd
EventID:Abcd
cn:Abcd
父:
模板:Something.cfgtpl
dn:cn =彼得
对象类:
对象类:
AdminDevType:
IOSConfigID:彼得
IOSEventID:彼得
cn:彼得
父:
模板:Something.cfgtpl
dn:cn = mohan
对象类:
对象类:
IOSconfigtemplate:
AdminDevType:
IOSConfigID:mohan
IOSEventID:mohan
cn:mohan
父母:
现在任务是我必须搜索file1 for pattern cn =或cn:outt out file1并将所有值存储在某个数组或其他内容中......就像这里我们只得到一个值即Abcd 完成此操作后,我必须搜索file2中file1中找到的所有字符串,如果找到它,则删除从dn开始的整个部分:cn = Abcd直到下一次出现模式dn: 类似地,我们需要搜索file1返回的所有值,如果文件2中存在匹配,则需要删除所需的部分。
请在shell脚本中建议如何执行此操作。在此先感谢
答案 0 :(得分:1)
awk -F '[[:blank:]=]+' '
# extract the CNs from file1
NR == FNR {
if (/^cn:/ || /^dn: cn=/)
cn[$NF] = 1
next
}
# process file2, removing sections where CN was in file1
/dn:/ {deleteThis = ($NF in cn)}
!deleteThis;
/^Template:/ {deleteThis = 0}
' file1 file2