awk og sætninger med mellemrum
Hej folkens.
Jeg sidder og prøver at lave et script til at analysere en ordliste.
Jeg vil gerne have awk til at printe hvilke sætninger der fremgår oftest på min liste. Mit problem består i, at jeg kun kan få awk til at printe de enkelte ord.
AWK-kode ($1 er ordlisten)
cat $1 | awk '{arr[$1]++} END {for(i in arr) print arr[i],i}' $1 | sort -nr
Ordliste:
hej
hej med dig
hej med dig
AWK finder ganske rigtigt ud af, at ordet "hej" topper listen, idet det står der 3 gange.
Jeg vil gerne have AWK til at printe, at "hej med dig" står 2 gange i listen. Altså have AWK til at læse linjen som en sætning, og ikke individuelle ord.
- Hvordan gør man lige det?
- Log in to post comments
Kommentarer1
Jeg vil gerne have AWK
#0: Jeg vil gerne have AWK til at printe, at "hej med dig" står 2 gange i listen. Altså have AWK til at læse linjen som en sætning, og ikke individuelle ord.
Brug $0 inden i awk i stedet for $1. $1 betyder første felt (her ord), mens $0 betyder hele linjen. Altså fx:
cat ordliste | awk '{arr[$0]++} END {for(i in arr) print arr[i],i}'
Du kan også gøre det så simpelt:
uniq -ic ordliste
-i betyde case insensitive, så hej og Hej tæller som samme ord. Fjern -i hvis du ikke ønsker dette.