아래와 같이 awk를 사용하여 노래 파일 이름을 계산하고 인쇄하려고 합니다.

아래와 같이 awk를 사용하여 노래 파일 이름을 계산하고 인쇄하려고 합니다.
RANK  NAME                    BAND  YEAR   GENERE  DOMESTIC/INTERNATIONAL   
206:Reach Out, I'll Be There:The Four Tops:1978:Pop:3/2         
207:Bye Bye Love:The Everly Brothers:1950:Classic:3/2     
208:Gloria:Them:1965:Classic:1/1      
209:In My Room:The Beach Boys:1985:Classic:5/7  
210:96 Tears:? & the Mysterians:1964:Classic:20/15     
211:Caroline, No:The Beach Boys:1975:Classic:5/7   
212:1999:Prince:1958:Classic:5/7       
213:Your Cheatin' Heart:Hank Williams:1988:Soul:7/6 

(1) 새로운 제목으로 순위, 출연자, 노래 목록을 인쇄하려고 하므로 다음과 같이 시도합니다.

nawk  'BEGIN { FS=":" 
printf "%-10s %-35s %-55s\n", "RANK", "PERFORMER","SONG"
print "=====================================================================\n"}
{printf "%-10s %-35s %-55s\n", $1, $3, $2}' songs

하지만 출력의 해당 줄 아래에는 여전히 기본 제목이 있습니다. 그러면 새 제목 아래의 첫 번째 줄을 어떻게 제거할 수 있습니까?

(2) 각 장르의 노래 수를 계산하고 각 장르의 총 수를 보고해야 합니다. 필요한 출력의 예:

classic 10
R&B 5
Soul 9 etc..

시도했지만 원하는 결과를 얻지 못했습니다.

awk '{count+$5} END {print $5}' songs 

답변1

첫 번째 줄을 건너뛰어야 합니다.

awk 'BEGIN { FS=":" 
printf "%-10s %-35s %-55s\n", "RANK", "PERFORMER","SONG"
print "=====================================================================\n"} 
FNR==1{next}{printf "%-10s %-35s %-55s\n", $1, $3, $2}' songs

출력 순서가 마음에 들지 않으면 다음을 시도하십시오.

$ awk -F':' 'FNR==1{next}{a[$5]+=1} END{for(i in a){print i,a[i]}}' songs
Soul 1
Classic 6
Pop 1

관련 정보