awk에 여러 테이블 행을 추가하는 방법

awk에 여러 테이블 행을 추가하는 방법

기본적으로 행당 4개의 필드가 있는 테이블을 인쇄하려고 합니다. 5번째 필드는 2번째 행부터 8번째 필드까지 계속되어야 합니다.

awk 'BEGIN{
        FS=" "
        print "<HTML><BR><h2><CENTER><BODY> DETAILS </BODY></CENTER> </h2> <BR><CENTER><table border=1> <CENTER>"
        print "<TR><TH>No</TH><TH>Name</TH><TH>task</TH><TH>location</TH></TR>"
     }
     {
        printf "<TR>"
        for(i=5;i<=NF;i++)

        printf "<TD><CENTER>%s</CENTER></TD>", $i
        print "</TR>"

     }
     END{
        print "</TABLE></HTML>"
     }' /home/xyz/found.txt

나는 지금 내가 받고 있는 것보다 낮은 것을 원하지 않습니다. 같은 줄에 인쇄됩니다.

 No     Name   task  Location

 1001         Mike     Texting    US    1002  Mark  Chatting  UK

그것은해야한다

 No     Name   task  Location

 1001         Mike     Texting    US    
 1002         Mark     Chatting   UK

몇 가지 제안을 해주실 수 있나요?

답변1

다음을 사용하여 4개 필드마다 줄별로 파일을 인쇄할 수 있습니다.

$ cat file7
abc,def,ghi,nop,klm,one,two,three,four,five,six,nine

$ awk -v RS="," '{printf("%s%s",$0,(NR%4==0?"\n":RS))}' file7
abc,def,ghi,nop
klm,one,two,three
four,five,six,nine

사용자 정의 RS(레코드 구분 기호)를 사용하면 NR(행 번호)을 활용하고 원본 파일의 각 필드를 별도의 레코드/별도의 줄로 처리할 수 있습니다.

헤더가 필요한 경우 awk의 BEGIN 섹션에서 인쇄할 수 있습니다.

추신: 필드가 공백으로 구분된 경우 그에 따라 RS(레코드 구분 기호)를 조정하십시오.

$ awk -v RS=" " '{printf("%s%s",$0,(NR%4==0?"\n":RS))}' file7

관련 정보