我想使用grep、awk或sed提取匹配模式后的第N行。
例如,我有一段文字:
Revision:
60000<br />我想提取60000。
我尝试了Revision:([a-z0-9]*)\s*([0-9]){5},它将修订号与修订号相匹配,但是当我将其传递给grep:grep Revision:([a-z0-9]*)\s*([0-9]){5} file.html时,我什么也得不到。
我如何才能做到这一点?
发布于 2013-08-12 19:58:59
要extract the Nth line after a matching pattern您想要的:
awk 'c&&!--c;/pattern/{c=N}' file例如:
awk 'c&&!--c;/Revision:/{c=5}' file将打印文本"Revision:"/之后的第5行。
有关详细信息,请参阅Printing with sed or awk a line following a matching pattern。
发布于 2019-10-29 16:11:54
我喜欢我可以学着重做的解决方案,而不必每次都去谷歌搜索。这个解决方案并不完美,但使用了简单的grep命令,我可以从内存中编写这些命令。
grep -A7 "searchpattern" file | grep -B1 "^--$" | grep -v "^--$"您可以将第7行更改为搜索模式后所需的第n行。然后,它搜索“组分隔符”--并显示之前的最后一行。然后删除组分隔符。
唯一不能正常工作的情况是,如果您的数据包含仅带有"--“的行。
https://stackoverflow.com/questions/18185771
复制相似问题