仅从尾巴-f打印大括号之间的行

问题描述

我有一个脚本,该脚本读取多个调试日志,将其附加到临时文件,然后在调试文件上执行tail -f,以便我们可以在单个窗口中监视调试事件并轻松查看用户何时进行操作引发事件。还有很多元数据也写入了这些调试日志,我不想包含在监视脚本的输出中。

有没有一种方法可以使用sedawk只打印大括号(包括大括号)中包含的数据?大括号内的数据可以并且总是跨多行。

数据可能看起来像这样:

DON'T PRINT THIS DATA:!@#%$%^
DON'T "!@#()*& PRINT THIS DATA EITHER
}
DON"T PRINT THIS
{
PRINT THIS DATA BLOCK
AND THIS DATA
AND THIS LINE TOO:!@#(*&
}
DONT:!@# \/PRINT THIS
{
BUT PRINT THIS
}

解决方法

使用多个sed

sed -n '/{/,/}/p' InputFile | sed '/^{/d' | sed '/^}/d'

使用单个sed

sed -n '/{/,/}/{/{/!{/}/!p}}' InputFile