Как добавить несколько строк таблицы в awk

В основном я пытаюсь распечатать таблицу с 4 полями в строке, и пятое поле должно полностью перейти во вторую строку, чтобы Восьмое поле.

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
17.05.2017, 18:47
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 ()и обрабатывать каждое поле исходного файла как отдельную запись/отдельную строку.

Если вам нужен заголовок, вы можете распечатать его в разделе BEGIN awk.

PS :Если ваши поля разделены пробелом, отрегулируйте RS (Разделитель записей )соответствующим образом:

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

Теги

Похожие вопросы