search - 使用sed查找模式,打印行直到第一个空行

标签 search sed grep find

我试图在 logcat 中找到一个特定的 PID 并打印所有行,直到下一个空行。 logcat 看起来像这样。

[ 07-17 11:15:14.003   483:  515 D/SensorService ]
Message

[ 07-17 11:15:15.300 20220:20225 D/dalvikvm ]
Message

[ 07-17 11:15:17.519   483:  515 D/SensorService ]
Message

我发现寻找这个问题的解决方案是这样的:
sed -n '/pattern/,/^$/p' logcat

在这个例子中,我想这样做
sed -n '/20220/,/^$/p' logcat

但是,我无法让它发挥作用。它实际上打印整个 logcat 而不是过滤它。当我执行
sed -n '/pattern/p' logcat

它按预期工作(如 grep),但只占用第一行。在我的理解中 ^ 代表一行的开头, $ 代表行的结尾,从而使 ^$ 成为一个空行。

对于如何解决此问题的任何意见,我将不胜感激。谢谢你。

最佳答案

通过awk,

$ awk '/20220/{p=1}/^ *$/{p=0}p' file
[ 07-17 11:15:15.300 20220:20225 D/dalvikvm ]
Message

通过sed,
$ sed -n '/20220/,/^ *$/p' file
[ 07-17 11:15:15.300 20220:20225 D/dalvikvm ]
Message

但是上面的 sed 命令也会打印空行。

关于search - 使用sed查找模式,打印行直到第一个空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24801520/

相关文章:

linux - 使用 sed 和 pstree 显示正在使用的终端类型

linux - 如何比linux命令的 "grep"更快地搜索文本文件中的单词?

regex - Linux 命令 - 查找长度为 3 个或 8 个字母的单词

bash - 用于提取 kubernetes pod 名称的 Grep 命令

shell - 更改 uniq -c 输出的简单方法?

javascript - 搜索 javascript 对象数组的更有效方法?

python - 如何对文本文件执行二进制搜索以在 python 中搜索关键字?

c++ - 多次读入数组

ios - 如何从 searchResultsController (UISearchController) 更新数据

linux - 根据字典替换事件代码的 Shell 命令