次のtxtファイルに5000の質問があります。
<quiz>
<que>The question her</que>
<ca>text</ca>
<ia>text</ia>
<ia>text</ia>
<ia>text</ia>
</quiz>
すべての問題を次のように変換するためにUbuntuでスクリプトを作成したいと思います。
{
"text":"The question her",
"answer1":"text",
"answer2":"text",
"answer3":"text",
"answer4":"text"
},
ベストアンサー1
実際には、Pythonプログラミングなしで2つのUnixユーティリティを使用するだけでこの問題を解決できます。
したがって、XMLがfile.xml
jtmにあると仮定すると、それを次のjsonに変換します。
bash $ jtm file.xml
[
{
"quiz": [
{
"que": "The question her"
},
{
"ca": "text"
},
{
"ia": "text"
},
{
"ia": "text"
},
{
"ia": "text"
}
]
}
]
bash $
その後、一連のJSON変換を適用すると、目的の結果が得られます。
bash $ jtm file.xml | jtc -w'<quiz>l:[1:][-2]' -ei echo { '"answer[-]"': {} }\; -i'<quiz>l:[1:]' | jtc -w'<quiz>l:[-1][:][0]' -w'<quiz>l:[-1][:]' -s | jtc -w'<quiz>l:' -w'<quiz>l:[0]' -s | jtc -w'<quiz>l: <>v' -u'"text"'
[
{
"answer1": "text",
"answer2": "text",
"answer3": "text",
"answer4": "text",
"text": "The question her"
}
]
bash $
しかし、関連するシェルスクリプト(コマンド)があるため、echo
Pythonよりも遅くなります。 5000の質問については約1分で実行されると予想されます。 (今後のバージョンでは、jtc
静的に指定されたJSONでも補間を許可する予定ですので、テンプレートの作成に外部シェルスクリプトを必要とせず、作業速度が非常に速くなります)
構文について質問がある場合は、jtc
ここでユーザーガイドを見つけることができます。https://github.com/ldn-softdev/jtc/blob/master/User%20Guide.md