在 awk 的每次迭代之间插入值

inserting values between each iteration of awk

我正在解析一个日志文件,其中加载了多种类型的 XML。我正在使用 awk 提取 XML 的特定部分。我正在使用以下内容:

        awk '/<TAG>/,/<\/TAG>/' ${LOG} > OUTPUT.txt;

但是,因为这些是内部标签而不是整个XML的开始或结束(因为有多种类型的XML),所以我需要添加初始标签以及底部的结束标签(为了完成日志,因为顶部和底部标签对于所有类型的 XML 都是通用的,我想要一种特定的类型)。

问题是:

有没有办法在每次 awk 迭代前后添加文本?​​

示例:

输入:

<TAG>
    <InnerTAG>
    </InnerTAG>
</TAG>
<TAGTWO>
    <InnerTAG>
    </InnerTAG>
</TAGTWO>
<TAG>
    <InnerTAG>
    </InnerTAG>
</TAG>

输出:

TOP
<TAG>
    <InnerTAG>
    </InnerTAG>
</TAG>
BOTTOM
TOP
<TAG>
    <InnerTAG>
    </InnerTAG>
</TAG>
BOTTOM

TOP & BOTTOM 是两个不同的印刷品还是我添加的东西?

PS:我无法提前知道有多少次迭代...这也是每个文件动态的。

谢谢,

试试

awk '/<TAG>/ {print "Before"} 
     /<TAG>/,/<\/TAG>/ {print} 
     /<\/TAG>/ {print "After"}' ${LOG} > OUTPUT.txt;

您可以将 "Before" 和 "After" 替换为您想要的任何内容。