我试图在 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/