我正在解析一个日志文件,它载有许多类型的XML。我使用awk来提取XML的特定部分。我使用以下内容:
awk '/<TAG>/,/<\/TAG>/' ${LOG} > OUTPUT.txt;
但是,因为这些是内部标记而不是整个XML的开头或结尾(因为有多种类型的XML),我需要添加初始标记以及底部的结束标记(以完成由于top和bottom标签对于所有类型的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&amp; BOTTOM是两种不同的印花或者我添加的东西?
PS:我无法预先知道有多少次迭代...这也是每个文件的动态。
谢谢,
答案 0 :(得分:0)
尝试类似
的内容awk '/<TAG>/ {print "Before"}
/<TAG>/,/<\/TAG>/ {print}
/<\/TAG>/ {print "After"}' ${LOG} > OUTPUT.txt;
用任何你想要的东西替换“之前”和“之后”。