Leetcode shell 试题词频统计

题目描述

Leetcode shell 试题词频统计_第1张图片
image.png

思路

基于对单列文件排序,即 sort |uniq -c|sort -nr,故只需要把空格替换成换行符,成为单列文件。

空格替换\n的几种方式

  1. tr # translate or delete characters
    说到替换命令,第一个想到的就是 tr 命令 tr -s ' ' '\n'
  2. sed
    sed 有替换的功能 sed 's/old/new/g',所以空格替换为换行命令 sed 's? ?\n?g' 或者 sed 's?\s?\n?g'
  3. printf # format and print data
    格式化打印数据,printf "%s\n" 逐个单词换行打印
  4. xargs
    xargs 分割字符串 -n 1表示每行输出一个
  5. for 循环
    for i in `cat words.txt`;do echo $i;done for循环是逐个读单词的

最后第一列与第二列交互位置,列处理自然使用 awk

awk '{print $2,$1}'

完整的一行命令答题

1. cat words.txt|tr -s ' ' '\n'|sort |uniq -c|sort -r|awk '{print $2,$1}'
2. cat words.txt|sed 's? ?\n?g' |sort |uniq -c|sort -r|awk '{print $2,$1}'
3. printf "%s\n" `cat words.txt` |sort |uniq -c|sort -r|awk '{print $2,$1}'
4. cat words.txt | xargs -n 1 | sort | uniq -c | sort -nr | awk '{print $2" "$1}'
5. for i in `cat words.txt`;do echo $i  ;done | sort |uniq -c | sort -nr |awl '{{print $2" "$1}}'

你可能感兴趣的:(Leetcode shell 试题词频统计)