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
最初の行をスキップする必要があります。
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