尝试使用awk计算和打印歌曲文件名


-2
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       
214:Rockin' in the Free World:Neil Young:1960:Pop:5/7  
215:Sh-Boom:The Chords:1967:Alternative:3/2   
216:Do You Believe in Magic:The Lovin' Spoonful:1988:Classic       
217:Jolene:Dolly Parton:1998:Classic:7/6     
218:Boom Boom:John Lee Hooker:1966:Classic:7/6

1st I tried to print a list of Rank, performers and songs with header so I tried:
but the output still have the default header under the line
nawk  'BEGIN { FS=":" 
printf "%-10s %-35s %-55s\n", "RANK", "PERFORMER","SONG"
print "=====================================================================\n"}
{printf "%-10s %-35s %-55s\n", $1, $3, $2}' songs

我没有计算每种类型的歌曲数量并报告每种类型的总数

期望的输出是示例:

经典10
R&B 5
灵魂9等..

我试过了

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

歌曲,但它没有返回结果


第一次我尝试用标题打印Rank,表演者和歌曲列表,所以我尝试了:但是输出仍然有nawk行下的默认标题'BEGIN {FS =“:”printf“%-10s%-35s%-55s \ n“,”RANK“,”PERFORMER“,”SONG“打印”================================= ==================================== \ n“} {printf”%-10s%-35s% -55s \ n“,$ 1,$ 3,$ 2}'歌曲
Intermd11年

Answers:


0

这很容易awk

$ awk -F: '{count[$5]++}END{for(genre in count) print genre,count[genre]}' file
Soul 1
Classic 9
Pop 2
Alternative 1
  • 我们将:显示为输入行的分隔符的行拆分。
  • 该类型显示为您的第5个字段
  • 我们将使用流派作为关键,并在每次看到你的线路时增加
  • END块中,我们将遍历我们的数组并打印密钥以及我们看到它的时间。

0

与JS的解决方案相同的原则,但也许更容易看到正在发生的事情,并在必要时进行编辑:

$> cat file | cut -d:-f5 | 排序| uniq -c
   1替代方案
   9经典
   2流行音乐
   1灵魂

该任务分为三个部分 - cut从数据中提取类型列(分隔符:,提取字段5),sort按字母顺序排序类型,然后uniq -c显示每个条目的计数,而不是显示重复的行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.