gpt4 book ai didi

linux - grep 一个字符串,如果匹配则在匹配行上方查找具有特定单词的行

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:24:05 27 4
gpt4 key购买 nike

我正在寻找文件中的模式,如下所示。在这个例子中,我需要 grep 一个字符串 mgrpRFC822MailMember: foo.foo2@example.com

如果上面的字符串匹配然后向上找到第一个dn:行并打印

test-d@example.com

现在,问题是,行 dn: 并不总是相同的编号(在下面的示例中,行 dn: 比 grep' ed 行 mgrpRFC822MailMember: foo.foo2@example.com)

这并不总是正确的。它可以是 mgrpRFC822MailMember: foo.foo2@example.com

之前的任何号码

条件是:

  1. 字符串的 grep - mgrpRFC822MailMember: foo.foo2@example.com

  2. 如果匹配,查找该行上方的第一个 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

最佳答案

您也可以使用 sed,它可能会更快。将以下内容放入文件中,比如 x.sed,不要添加任何空格或制表符

/dn:/h
/MailMember:/{
g
s/.*RoutingAddress.//
s/,.*//p
}

然后像这样运行sed

sed -n -f x.sed filename

对于你的例子,它打印出来

test-d@example.com

关于linux - grep 一个字符串,如果匹配则在匹配行上方查找具有特定单词的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16156275/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com