【发布时间】:2015-04-16 13:33:24
【问题描述】:
如果有人可以帮助我找出并回答以下案例,将不胜感激。我需要一个应该能够在bash shell 中执行的解决方案。
假设我有这样的文件,
1.Mary had a little lamb,
2.Little lamb, little lamb,
3.Mary had a little lamb,
4.Its fleece was white as snow
5.And everywhere that Mary went,
6.Mary went, Mary went,
7.Everywhere that Mary went
8.The lamb was sure to go
9.It followed her to school one day
10.School one day, school one day
11.It followed her to school one day
12.Which was against the rules.
我的搜索条件是这样的,
它应该首先搜索单词little(即第1 2 和3 行),然后在下一行应该有一个单词fleece(即仅第4 行)输出应该打印两个匹配的行(3 和4 ) 加上最后搜索行之后的四行,即第 4 行的 fleece。所以最终输出应该是 lines 3,4,5,6,7,8
解决方案可以是 bash shell 脚本、perl 或 python。
请分享您的想法。
【问题讨论】:
-
你能解释一下这个`输出应该打印两个匹配的行(3和4)`吗?
-
@Avinash Raj 这个“grep”应该首先搜索“little”这个词,然后在紧接的行中应该有一个“fleece”这个词。如果有这样的行组合,那么应该打印这样的组合。因此第 3 行和第 4 行。此外,还应打印从 5 到 8 的所有行。
-
但在同一行上没有像
fleece和little这样的字符串。 -
@Avinash Raj 是的。那就是问题所在。我再说一遍。首先,一旦找到这样的行,它应该搜索单词“little”,然后在直接行中应该有一个单词“fleece”。但不在同一行。这已在stackoverflow.com/questions/2686147/… 中进行了解释,但我的问题是如何在最后一个马赫之后获得 N 行。
-
你想要 grep 解决方案吗?
标签: python regex bash perl grep