Leetcode shell 试题词频统计

题目描述

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}}'
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。