awkに複数のテーブル行を追加する方法

awkに複数のテーブル行を追加する方法

デフォルトでは、1行に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セクションで印刷できます。

PS:フィールドがスペースで区切られている場合は、それに応じてRS(レコード区切り記号)を調整してください。

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

おすすめ記事