我正在寻找一个文件中的模式,如下所示 . 在这个例子中,我需要grep一个字符串 mgrpRFC822MailMember: foo.foo2@example.com
如果上面的字符串匹配,则上升并找到第一个 dn:
行并打印
test-d@example.com
现在,问题是, dn:
行并不总是在相同的数字(在下面的示例中,行 dn:
是grep'ed行上方的3行 mgrpRFC822MailMember: foo.foo2@example.com
)
这并非总是如此 . 它可以在 mgrpRFC822MailMember: foo.foo2@example.com
之前的任何数字
这是条件:
-
grep为字符串 -
mgrpRFC822MailMember: foo.foo2@example.com
-
如果匹配,请在此行上方查找FIRST dn:行并仅打印
test-d@example.com
任何帮助是极大的赞赏 .
time: 1364633264
dn: mailRoutingAddress=test-d@example.com,ou=MessageRecipientGroups,dc=example,dc=com
changetype: modify
delete: mgrpRFC822MailMember
mgrpRFC822MailMember: foo.foo2@example.com
-
replace: entryCSN
entryCSN: 20130330084739Z#00000b#00#000000
-
replace: modifiersName
modifiersName: uid=distlist-cleanup,ou=SysAccounts,dc=example,dc=com
2 回答
你也可以使用更快的sed . 将以下内容放入文件中,例如
x.sed
,不要添加任何空格或制表符然后像这样运行sed
对于你的例子,它打印出来
寻找
dn:
行将行保存为
bar
变量寻找
MailMember:
行print
bar
变量