.xmlを使用して、完全な2番目のファイルコンテンツ(ログ)をXML<log>
タグに追加しようとしていますawk
。FS="\n" RS="\n\n"
最初の入力ファイルに合ったファイルを使用しているため、両方の入力ファイルを1つにマージすることはできません。私のawk
コードの間にどの部分を含めるべきかわかりません。<log>WHAT_TO_FEED_HERE?</log>
どんなアドバイスでもとても役に立ちます。
入力ファイル1:
Sara
123
[email protected]
John
456
[email protected]
入力ファイル2:
#This is first line along with # symbol
#There were two blank lines spaces above
#Candidatedata1 values
#Some more random text
最終出力は次のようになります。
<name>Sara</name>
<id>123</id>
<email>[email protected]</email>
<log>
#This is first line along with # symbol
#There were two blank lines spaces above
#Candidatedata1 values
#Some more random text
</log>
<name>John</name>
<id>456</id>
<email>[email protected]</email>
<log>
#This is first line along with # symbol
#There were two blank lines spaces above
#Candidatedata2 values
#Some more random text
</log>
私は次のawk
文を使用しました。
awk 'BEGIN{FS = "\\n";RS = "\\n\\n"; print " "}
{ print "<candidate>" }
{ print "<name>"$1"</name>" }
{ print "<id>"$2"</id>" }
{ print "<email>"$3"</email>" }
{ print "<log>"WHAT_TO_FEED_HERE?"</log>" }
{ print "</candidate>" }
{print " " }' Input_file1.txt Input_file2.txt> candidatefinaloutput.xml
ベストアンサー1
awkは、すべてのファイルに同じ処理を適用したくない場合は少し面倒ですが、実行できます。
このユースケースでは、最初に2番目のファイルの内容を読み、それを使用します。
BEGIN {
while (getline <ARGV[2]) {
logfile = logfile $0 "\n"
}
delete ARGV[2];
FS = "\\n"; RS = "\\n\\n";
}
{
print "<candidate>";
print "<name>" $1 "</name>";
print "<id>" $2 "</id>";
print "<email>" $3 "</email>";
print "<log>" logfile "</log>";
print "</candidate>";
print "";
}