【发布时间】:2019-06-15 06:18:13
【问题描述】:
是否可以使用awk 或sed 获取一行的行号,使其成为匹配正则表达式的第一行,然后是另一行匹配另一个正则表达式的行?
换句话说:
- 查找匹配正则表达式 r1 的行 l1。 l1 是匹配 r1 的第一行。
- 找到线 l2 下面 l1。 l2 匹配正则表达式 r2。 l2 是匹配 r2 的第一行,忽略 l1 及以上的行。
澄清:匹配我的意思是部分匹配,对于大多数通用解决方案。
部分匹配当然可以变成与\<...\> 的全字匹配或与^...$ 的全行匹配。
示例输入:
- - '787928'
- stuff
- - '810790'
- more stuff
- - '787927'
- yet more stuff
- - '828055'
- some more stuff
- - '828472'
- some other stuff
如果 r1 是 ^-.*787927.* 并且 r2 是 ^- 我希望输出为 7,即表示 - - '828055' 的行号。
【问题讨论】:
-
抱歉,这不是 StackOverflow 的工作方式。 “我想做 X,请给我提示和/或示例代码”形式的问题被认为是题外话。请访问help center并阅读How to Ask,尤其是阅读Why is “Can someone help me?” not an actual question?
-
不要使用
pattern这个词,因为它非常模棱两可。而是使用单词regexp或string,无论您是什么意思,并说明您是否需要部分、全字或全行匹配或其他内容。此外 - 无论您尝试做什么,都可以发布简洁、可测试的样本输入和完全满足您所有要求的预期输出。