awk를 사용하여 두 번째 파일의 내용을 삽입하십시오.

awk를 사용하여 두 번째 파일의 내용을 삽입하십시오.

.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 "";
}

관련 정보