首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提取匹配模式后的第N行

提取匹配模式后的第N行
EN

Stack Overflow用户
提问于 2013-08-12 19:25:21
回答 2查看 15.7K关注 0票数 7

我想使用grepawksed提取匹配模式后的第N行。

例如,我有一段文字:

代码语言:javascript
复制
      Revision:
      60000<br />

我想提取60000。

我尝试了Revision:([a-z0-9]*)\s*([0-9]){5},它将修订号与修订号相匹配,但是当我将其传递给grep:grep Revision:([a-z0-9]*)\s*([0-9]){5} file.html时,我什么也得不到。

我如何才能做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-12 19:58:59

extract the Nth line after a matching pattern您想要的:

代码语言:javascript
复制
awk 'c&&!--c;/pattern/{c=N}' file

例如:

代码语言:javascript
复制
awk 'c&&!--c;/Revision:/{c=5}' file

将打印文本"Revision:"/之后的第5行。

有关详细信息,请参阅Printing with sed or awk a line following a matching pattern

票数 25
EN

Stack Overflow用户

发布于 2019-10-29 16:11:54

我喜欢我可以学着重做的解决方案,而不必每次都去谷歌搜索。这个解决方案并不完美,但使用了简单的grep命令,我可以从内存中编写这些命令。

代码语言:javascript
复制
grep -A7 "searchpattern" file | grep -B1 "^--$" | grep -v "^--$"

您可以将第7行更改为搜索模式后所需的第n行。然后,它搜索“组分隔符”--并显示之前的最后一行。然后删除组分隔符。

唯一不能正常工作的情况是,如果您的数据包含仅带有"--“的行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18185771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档