Input Contents:
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetorgperson
objectClass: org-abc
objectClass: org-xyz
objectClass: top
objectClass: inetOrgPerson
objectClass: org-abc
objectClass: organizationalPerson
objectClass: person
objectClass: top
objectClass: org-abc
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: org-xyz
objectClass: top
objectClass: inetOrgPerson
objectClass: org-xyz
objectClass: organizationalPerson
objectClass: person
Read a LDIF file of size 50 MB.
The contents between two new-lines are considered as a BLOCK.
- if both the lines (objectClass: org-abc & objectClass: org-xyz) are present in any order in a BLOCK, then remove those 2 lines in a BLOCK and add a new line as "objectClass: org-111"
(OR)
- if this line "objectClass: org-abc" alone is present in a BLOCK, then replace that line with "objectClass: org-222"
(OR)
- if this line "objectClass: org-xyz" alone is present in a BLOCK, then replace that line with "objectClass: org-333"
Expected Output:
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetorgperson
objectClass: org-111
objectClass: top
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: org-222
objectClass: top
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: org-111
objectClass: top
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: org-333
How can I get such output using Linux commands (sed or awk) or suggest me a better approach?
objectClass: org-222
at the end but say it should be replacing whichever line had theobjectClass: org-abc
. Which one is it?