Awk kullanarak şarkı dosyası adlarını saymaya ve yazdırmaya çalışıyor


-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

Her türdeki şarkı sayısını saymadım ve her bir türün toplamını rapor etmedim.

İstenilen çıktı örnek:

klasik 10
R & B 5
Ruh 9 vb.

denedim

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

şarkılar ancak sonuç döndürülemedi


1. Başlığı olan Rank, sanatçılar ve şarkıların bir listesini yazdırmaya çalıştım, bu yüzden denedim: ancak çıktı hala nawk 'BEGIN {FS = ":" printf "% -10s% -35s% -55s satırının altında varsayılan başlığa sahip \ n "," RANK "," PERFORMER "," ŞARKI "yazdır" =============================================== ====================================== \ n "} {printf"% -10s% -35s% -55s \ n ", 1 $, 3 $, 2 $} 'şarkı
Intermd11

Yanıtlar:


0

İle oldukça kolay awk.

$ awk -F: '{count[$5]++}END{for(genre in count) print genre,count[genre]}' file
Soul 1
Classic 9
Pop 2
Alternative 1
  • :Giriş satırlarınızın sınırlayıcı olduğu görünen çizgiyi ayırdık.
  • Tür, hattınızın 5. alanı olarak görünür.
  • Çizginizde her gördüğümüzde anahtarı anahtar ve artış olarak kullanacağız
  • Gelen ENDblokta sadece bizim dizi üzerinden yineleme olacak ve biz onu gördük süreleri ile birlikte anahtar yazdırın.

0

JS'nin çözümü ile aynı prensip, ama neler olup bittiğini görmek ve gerekirse düzenlemek için belki biraz daha kolay:

$> kedi dosyası | kesilmiş -d: -f5 | sıralama | uniq -c
   1 Alternatif
   9 Klasik
   2 Pop
   1 Ruh

Görev üç bölüme ayrılmıştır - cuttür sütununu verilerden ayıklar (sınırlayıcı :, alan 5'i çıkarır ), sorttürleri alfabetik olarak uniq -csıralar ve sonra her satırın sayısını, kopya satırlar göstermek yerine gösterir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.