Miten linuxissa bashissa saa laskettua montako kertaa sama rivi esiintyy tiedostossa?
Esim jos on vaikka data.txt:
kana
lehmä
kissa
lehmä
kana
kana
Niin lopputulos olisi
3 kana
2 lehmä
1 kissa
Esim jos on vaikka data.txt:
kana
lehmä
kissa
lehmä
kana
kana
Niin lopputulos olisi
3 kana
2 lehmä
1 kissa
Vastaukset 10
Vanhimmat
man sort
man uniq
man grep
ja pari muuta
Rivien lkm vaikka wc -l data.txt. Tietty sana löytyy vaikka grep -l sana *| wc -l. kaikkien sanojen laskeminen vaatii tietysti while read file; do tyyppisen loopin. Jos tuo on kotitehtäväsi en auta enempää.
Tätäkin voit kokeilla:
cat data.txt | awk ' { J[$0] } END { for (i in J) print J[i],i } ' | sort
Linux Mint 18 Sarah
Xfce 64-bit
Huomasin vasta nyt että aakkostus oli väärin päin joten nyt sitten oikein päin
cat data.txt | awk ' { J[$0] } END { for (i in J) print J[i],i } ' | sort -r
tarvittiin valitsin -r kääntämään tuo aakkostus, ei muuta.
Linux Mint 18 Sarah
Xfce 64-bit
Ja hienostellaan vielä vähän, ensin rivi ja sitten määrä näin:
cat data.txt | awk ' { J[$0] } END { for (i in J) print i, ".. \t",J[i] } ' | sort -r
no nyt tää varmaan jo riittää.
Helpoin tapa:
# sort data.txt | uniq -c | sort -nr > rivit.txt
Tiedätkö miten perkeleen vaikeeta oli minun saada tuommonen seka-sotku tehtyä, ja sinä tulet ja teet parilla merkillä saman, ja puhut vielä Fiksusta,
Ok, tuohan on hyvä, ellei paras, tai vieläkin parempi.
Linux Mint 18 Sarah
Xfce 64-bit
Minne tietotekniikka on palstalta kadonnut?
Katsoo silimillään ja laskee. Helppoa.
Yksi aika simppeli tapa:
sort tiedosto.txt | uniq -c