[英]grep for a string and if matches look for a line with specific word above the matched line
我正在以下文件中尋找模式。 在此示例中,我需要grep輸入字符串mgrpRFC822MailMember: foo.foo2@example.com
如果上述字符串匹配,則向上查找第一個dn:
行並打印
test-d@example.com
現在的問題是,行dn:
並不總是相同的數字(在下面的示例中,行dn:
在grep的行mgrpRFC822MailMember: foo.foo2@example.com
上方3行mgrpRFC822MailMember: foo.foo2@example.com
)
這並非總是如此。 它可以是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
awk '/dn: /{bar=$2} /MailMember:/{print bar}' FS='[=,]'
dn:
線 bar
變量 MailMember:
第 bar
變量 您也可以使用sed,它可能會更快。 將以下內容放入文件中,例如x.sed
,不要添加任何空格或制表符
/dn:/h
/MailMember:/{
g
s/.*RoutingAddress.//
s/,.*//p
}
然后像這樣運行sed
sed -n -f x.sed filename
例如,它打印出來
test-d@example.com
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.