使用grep/sed/awk
我想在文件中找到pattern1
之前搜索pattern2
并打印仅包含pattern1
的结果。
我不希望在此站点中有许多解决方案的pattern1和pattern2范围之间的行。请帮忙。
我尝试了以下但没有结果:
adb logcat | grep -i'pattern1'| grep -m 1'pattern2'
看起来'|'
使其成为AND condition
,而我正在寻找的字符串不在同一行。它们有不同的界限。
已更新:解决方案在终端中运行,但不在脚本中运行。有人可以帮助找出它不能在脚本中工作的原因吗?
答案 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/'