我想使用grep/sed/awk搜索pattern1,直到在文件中找到pattern2,然后打印仅包含pattern1的结果。

我不希望pattern1和pattern2的范围之间存在界线,因为在此站点中有很多解决方案。请帮忙。

我尝试了以下操作,但没有结果:

亚行logcat | grep -i'pattern1'| grep -m 1'模式2'

看起来'|'使其成为AND condition,而我要查找的字符串不在同一行中。它们处于不同的行。

更新:解决方案在终端中运行,但不在脚本中运行。有人可以帮忙找出为什么它不能在脚本中工作吗?

最佳答案

找到pattern2后,使用sed停止打印:

adb logcat | sed  '/pattern2/q' | grep -i 'pattern1'


或者使用sed既打印pattern1又在pattern2之后退出:

adb logcat | sed  -n '/pattern1/p;/pattern2/q'

10-08 13:46