⭐️ LeetCode解题系列 ⭐️ 192. 统计词频(Shell)

Posted Lucifer三思而后行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了⭐️ LeetCode解题系列 ⭐️ 192. 统计词频(Shell)相关的知识,希望对你有一定的参考价值。

❤️ 原题 ❤️

写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。

为了简单起见,你可以假设:

  • words.txt 只包括小写字母和 ' '
  • 每个单词只由小写字母组成。
  • 单词间由一个或多个空格字符分隔。

示例:

假设 words.txt 内容如下:

the day is sunny the the
the sunny is is

你的脚本应当输出(以词频降序排列):

the 4
is 3
sunny 2
day 1

说明:

  • 不要担心词频相同的单词的排序问题,每个单词出现的频率都是唯一的。
  • 你可以使用一行 Unix pipes 实现吗?

⭐️ 解题思路 ⭐️

注意几个关键词:词频降序排列、统计每个单词出现次数、使用一行命令实现。

① 使用 xargs 将所有行转为单列显示:

cat words.txt | xargs -n1


② 使用 sort + uniq 函数进行排列:

  • sort -nr 表示依照数值的大小降序排序。
  • uniq -c 表示在每列旁边显示该行重复出现的次数。
cat words.txt | xargs -n1 | sort | uniq -c | sort -nr


③ 使用 awk + print 函数将 1、2 列位置互换:

cat words.txt | xargs -n 1 | sort | uniq -c | sort -nr | awk '{print $2" "$1}'


至此,本题已解。

去 LeetCode 执行一下看看结果吧:

❄️ 写在最后 ❄️

本题依然是使用 Linux 的一些基础命令:xargssortuniqawk,基础很重要!


本次分享到此结束啦~

如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。

以上是关于⭐️ LeetCode解题系列 ⭐️ 192. 统计词频(Shell)的主要内容,如果未能解决你的问题,请参考以下文章

⭐️ LeetCode解题系列 ⭐️ 175. 组合两个表(Oracle 简单的左右连接)

⭐️ LeetCode解题系列 ⭐️ 175. 组合两个表(Oracle 简单的左右连接)

⭐️ LeetCode解题系列 ⭐️ 194. 转置文件(Shell)

⭐️ LeetCode解题系列 ⭐️ 194. 转置文件(Shell)

⭐️ LeetCode解题系列 ⭐️ 178. 分数排名(Oracle dense_rank函数)

⭐️ LeetCode解题系列 ⭐️ 178. 分数排名(Oracle dense_rank函数)