Это в основном вопрос awk, но речь идет об обработке данных для формата Moodle Gift , то есть тегов.
Я хочу отформатировать HTML-код ввопрос (Moodle «тестовая» деятельность), но мне нужно заменить <и> на соответствующие объекты, так как они будут интерпретироваться как «настоящий» html, а не печататься. Однако я хочу иметь возможность набирать вопрос обычным кодом и обрабатывать файл перед импортом в качестве подарка в Moodle.
Я подумал, что awk будет идеальным инструментом для этого.
Скажите, у меня есть этот вопрос (недействительный как таковой) Вопрос Moodle / Gift:
<code>::q1::[html]This is a question about HTML:
<pre>
<p>some text</p>
и какой-то тег:
<img>
{T}
Мне нужен скрипт, который переводит этов действительный вопрос подарка:
<code>::q1::[html]This is a question about HTML:
<pre>
<p>some text</p>
и некоторый тег:
<img>
{T}
ключевой момент: замените <и> на <
и >
, когда:
- внутри блока
<pre>
- </pre>
(при условии, что эти теги находятся на одной строке) - между
<code>
и
, с произвольной строкой между.
По первой части я в порядке. У меня есть скрипт оболочки, вызывающий awk (на самом деле gawk).
awk -f process_src2gift.awk $1.src >$1.gift
с process_src2gift.awk:
<code>BEGIN { print "// THIS IS A GENERATED FILE !" }
{
if( $1=="<pre>" ) # opening a "code" block
{
code=1;
print $0;
}
else
{
if( $1=="
") # закрывающий блок« code »{code = 0; print $ 0;} else {# if "code block", заменить <> на html-сущности if (code == 1) {gsub (">", "\\>"); gsub ("<", "\\ <");} print $ 0;}}} END {print "// END"} </code>
Однако я застрял со вторым требованием ..
Вопросы:
Можно ли добавить в мой код сценария awk обработку кода hmtl внутри тегов <code>
? Есть идеи? Я думал об использовании sed, но не видел, как это сделать.
Может быть, awk не подходит для этого? Я открыт для любых предложений по другому (стандартному Linux) инструменту.