.xml 을 사용하여 전체 두 번째 파일 콘텐츠(로그)를 XML <log>
태그 에 추가하려고 합니다 awk
. FS="\n" RS="\n\n"
첫 번째 입력 파일에 맞는 파일을 사용하고 있기 때문에 두 입력 파일을 하나로 병합할 수 없습니다 . 내 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는 모든 파일에 동일한 처리를 적용하고 싶지 않을 때 약간 번거롭지만 수행할 수 있습니다.
이 사용 사례에서는 처음에 두 번째 파일의 내용을 읽은 다음 사용합니다.
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 "";
}