XML awk形式の問題

XML awk形式の問題

レコード区切り文字(RS = "\ n \ n")のため、出力XML形式に問題があります。データセットは空行で区切られます。どんな提案でも望ましい結果を得るのに非常に役立ちます。

これはinput.txtの私の入力です。

Alex
Marks300
SubjectScience

Robin
Marks200
SubjectChemistry

次のような出力を取得しようとしています。

<candidate>
<name>Alex</name>
<marks>Marks300</marks>
<subject>SubjectScience</subject>
</candidate>

<candidate>
<name>Robin</name>
<marks>Marks200</marks>
<subject>SubjectChemistry</subject>
</candidate>

次のコードを使用しようとしても機能しません。

awk 'BEGIN{FS = "\\n";RS = "\\n\\n";
print " "}
{ print "<candidate>" }
{ print "<name>"$1"</name>" }
{ print "<marks>"$2"</marks>" }
{ print "<subject>"$3"</subject>" }
{ print "</candidate>" }
{print " " }' input.txt > candiatefinaloutput.xml

上記のコードを使用すると、次のような結果が得られます。

<candidate>
<name>alex<\name>
<marks><\marks>
<subject><\subject>

<name>Marks300<\name>
<marks><\marks>
<subject><\subject>

<name>SubjectScience<\name>
<marks><\marks>
<subject><\subject>

<name>Robin<\name>
<marks><\marks>
<subject><\subject>

など。

ベストアンサー1

次のことを試してみてください。

awk 'BEGIN{FS = "\n";RS = "\n\n";
print " "}
{ print "<candidate>" }
{ print "<name>"$1"</name>" }
{ print "<marks>"$2"</marks>" }
{ print "<subject>"$3"</subject>" }
{ print "</candidate>" }
{print " " }' input.txt > candiatefinaloutput.xml

これが私が得るものです:

[romeo.romeo-PC] ➤ cat 3
Alex
Marks300
SubjectScience

Robin
Marks200
SubjectChemistry
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[2015-05-07 09:00.04]  ~/tmp
[romeo.romeo-PC] ➤ awk 'BEGIN{FS = "\n";RS = "\n\n";
print " "}
{ print "<candidate>" }
{ print "<name>"$1"</name>" }
{ print "<marks>"$2"</marks>" }
{ print "<subject>"$3"</subject>" }
{ print "</candidate>" }
{print " " }' 3

<candidate>
<name>Alex</name>
<marks>Marks300</marks>
<subject>SubjectScience</subject>
</candidate>

<candidate>
<name>Robin</name>
<marks>Marks200</marks>
<subject>SubjectChemistry </subject>
</candidate>

おすすめ記事