기본적으로 행당 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