使用grep在文件中读取pattern1的日志,并仅打印包含pattern1的行。在文件中找到pattern2时停止搜索

时间:2015-02-24 08:12:13

标签: android python awk sed grep

使用grep/sed/awk我想在文件中找到pattern1之前搜索pattern2并打印仅包含pattern1的结果。

我不希望在此站点中有许多解决方案的pattern1和pattern2范围之间的行。请帮忙。

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

adb logcat | grep -i'pattern1'| grep -m 1'pattern2'

看起来'|'使其成为AND condition,而我正在寻找的字符串不在同一行。它们有不同的界限。

已更新:解决方案在终端中运行,但不在脚本中运行。有人可以帮助找出它不能在脚本中工作的原因吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:1)

可以通过一次调用sed来完成:

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

或者,只需拨打一次awk

即可完成此操作
adb logcat | awk '/pattern2/{exit} /pattern1/'