这基本上是一个 awk 问题,但它是关于处理Moodle Gift格式的数据,因此是标签。
我想在问题中格式化 html 代码(Moodle“测试”活动),但我需要用相应的实体替换 < 和 >,因为这些将被解释为“真实”html,而不是打印。但是,我希望能够使用常规代码输入问题并在将文件作为礼物导入 Moodle 之前对文件进行后处理。
我认为 awk 将是执行此操作的完美工具。
假设我有这个(无效的)Moodle/gift 问题:
::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}
关键点:将 < 和 > 替换为<
and >
when:
- 在 a
<pre>
-</pre>
bloc 内(假设这些标签单独在一行上) <code>
和之间</code>
,中间有任意字符串。
对于第一部分,我很好。我有一个调用 awk 的 shell 脚本(实际上是 gawk)。
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 脚本代码来处理标签内的 hmtl 代码
<code>
?任何想法 ?我考虑过使用 sed 但我不知道该怎么做。也许 awk 不是正确的工具?我愿意接受有关其他(标准 Linux)工具的任何建议。