这基本上是一个awk问题,但它涉及处理Moodle的数据 Gift格式,也就是标签。
我想格式化问题中的html代码(Moodle“测试”活动),但我需要用相应的实体替换,因为这些实体将被解释为“真实的” html,而不是打印出来的。 但是,我希望能够使用常规代码键入问题并在将该文件作为礼物导入Moodle之前对其进行后处理。
我认为awk将是执行此操作的理想工具。
说我有这个(无效的)Moodle /礼物问题:
::q1::[html]This is a question about HTML:
<pre>
<p>some text</p>
</pre>
and some tag:<code><img></code>
{T}
我想要的是一个脚本,可以将其转换为有效的礼物问题:
::q1::[html]This is a question about HTML:
<pre>
<p>some text</p>
</pre>
and some tag:<code><img></code>
{T}
关键点:在以下情况下,用<
和>
替换:
- 在
<pre>
-</pre>
集团内部(假设这些标记单独位于一行中) - 在
<code>
和</code>
之间,且介于两者之间的任意字符串。
对于第一部分,我很好。我有一个叫awk(实际上是gawk)的shell脚本。
awk -f process_src2gift.awk $1.src >$1.gift
与process_src2gift.awk:
BEGIN { print "// THIS IS A GENERATED FILE !" }
{
if( $1=="<pre>" ) # opening a "code" block
{
code=1;
print $0;
}
else
{
if( $1=="</pre>" ) # closing a "code" block
{
code=0;
print $0;
}
else
{ # if "code block",replace < > by html entities
if( code==1 )
{
gsub(">","\\>");
gsub("<","\\<");
}
print $0;
}
}
}
END { print "// END" }
但是,我坚持第二个要求。
问题:
-
是否可以在我的awk脚本代码中添加以处理
<code>
标记内的hmtl代码?任何想法 ?我曾考虑过使用sed,但没有看到如何做。 -
也许awk不是正确的工具吗?我愿意接受其他(标准Linux)工具的建议。