如何在awk中添加多个表行

如何在awk中添加多个表行

基本上我试图打印一个每行有 4 个字段的表,第 5 个字段应该一直到第二行到第 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 部​​分打印标头。

PS:如果您的字段由空格分隔,请相应调整 RS(记录分隔符):

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

相关内容