用sed查找图案,打印行直到第一个空行

Osk*_*kar 2 search grep sed find

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

[ 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
Run Code Online (Sandbox Code Playgroud)

我在寻找解决此问题的方法时发现的是:

sed -n '/pattern/,/^$/p' logcat
Run Code Online (Sandbox Code Playgroud)

在此示例中,我想这样做

sed -n '/20220/,/^$/p' logcat
Run Code Online (Sandbox Code Playgroud)

但是,我无法使它正常工作。实际上,它会打印整个logcat而不是对其进行过滤。当我执行

sed -n '/pattern/p' logcat
Run Code Online (Sandbox Code Playgroud)

它按预期方式工作(如grep),但仅采用第一行。在我的理解中,^表示行的开始,$表示结束,因此使^ $为空行。

我将不胜感激如何解决此问题。谢谢。

Avi*_*Raj 5

通过awk,

$ awk '/20220/{p=1}/^ *$/{p=0}p' file
[ 07-17 11:15:15.300 20220:20225 D/dalvikvm ]
Message
Run Code Online (Sandbox Code Playgroud)

通过sed

$ sed -n '/20220/,/^ *$/p' file
[ 07-17 11:15:15.300 20220:20225 D/dalvikvm ]
Message
Run Code Online (Sandbox Code Playgroud)

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