我试图在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),但仅占用第一行。在我的理解中,^代表一行的开头和$结尾,从而使^ $成为空行。
对于如何解决这个问题的任何意见,我将不胜感激。谢谢。
答案 0 :(得分:4)
通过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命令也会打印出空行。
答案 1 :(得分:1)
我认为文件中还有其他一些空格字符,例如\t
。
使用sed -n -r '/20220/,/^\s*$/p'
试一试。