请考虑下面的例子:Grep - 具有独立上下文的复合语句?
$ echo -e "-wordA \n 1\n 2\n 3\n-wordB \n 1\n 2\n 3\n" | grep -n -A1 -e '^-wordA' -A2 -e '^-wordB'
1:-wordA
2- 1
3- 2
--
5:-wordB
6- 1
7- 2
我想上面做的,就是有1号线的“上下文后”当行首-wordA
比赛,和2号线的背景后,-wordB
匹配时。显然,我的尝试是行不通的,因为在两场比赛中,我都会得到两行的上下文。
显然,以上下文中的最后一个设置为准,成为所有搜索的设置;但我只是想确保 - 可以使用grep
进行这样的“复合”搜索与个人情况? (编辑:特别是,我的意思是通过调用grep
单个实例来使用,可能避免临时文件)
非常感谢任何答案,
干杯!
感谢的是,@sarnold - 看起来不错!我会离开这个问题一段时间,看看是否会出现'grep'原生答案 - 否则这个答案对我来说看起来是可以接受的;非常感谢 - 欢呼! – sdaau
这是一个很好的计划;我不知道如果'-wordA'和'-wordB'是背靠背的行,或者在另一个的打印空间内,这是否会做正确的事情。我认为'grep(1)'可以更好地处理它 - 如果它可以在'grep(1)'中完成 - 但如果不能,这应该是一个有价值的起点。 – sarnold