In this Leetcode Word Frequency problem solution, we need to write a bash script to calculate the frequency of each word in a text file words.txt.

Leetcode Word Frequency problem solution


First problem solution.

awk 'BEGIN { 
    PROCINFO["sorted_in"] = "@val_num_desc"   # set array traversal to values in descending order
} { 
    for (i=1;i<=NF;i++) {   # take each word separately
        a[$i]++             # populate array a with word count incremented each time
    }
} END {
    for (i in a) {          # array traversal and print which will follow pre-set order
        print i,a[i]
    }
}' words.txt



Second problem solution.

# Read from the file words.txt and output the word frequency list to stdout.
cat words.txt| tr -s " " "\n" |sort| uniq -c | sort -rk1| sed "s/\(.*\) \(.*\)/\2\1/" | tr -s " "


Third Problem solution.

cat words.txt | tr -s ' ' '\n' | sort | uniq -c | sort -nr | awk '{printf("%s %s\n",$2,$1)}'