【问题标题】:How to output the 3 most frequent pattern matches in sorted order in the Linux terminal? [closed]如何在 Linux 终端中按排序顺序输出 3 个最频繁的模式匹配? [关闭]
【发布时间】:2021-04-18 01:14:46
【问题描述】:

我有一个名为survey.txt 的文件,我在其中使用cut -d, -f1 survey.csv 得到以下结果:

What's your favorite candy?
Skittles
Butterfinger
Skittles
Snickers
100 grand
Chocolate
See's Candies
Twix
Sour patch
Sour Patch Kids
Dark chocolate
Reese's Take 5
FERRERO ROCHER
butterfinger
M&M
Twix
twix
I don't like candy that much.
kit kat
Gummy Bears
Sour Patch Kids
skittles
KitKats
Twix
Sour patch - Watermelon
White Rabbit creamy candy
Crunch
Anything savory!
not in favor of candies
skittles
right Twix
M&M's
Skittles
M&Ms
any chocolate
Kit Kat
Reeses
KitKats
Sour Patch Kids
Sourpatch kids
M&M's
Nerds
M&Ms
Mars Bars
Jolly Ranchers
swedish fish
hichew
Reece's
M&Ms
cane
KitKat
Sour Patch Kids
strawberry cream chocolate
Anything dark chocolate
Reeses
KitKat or Sour Gummies of any kind.
Blue Raspberry Laffy Taffy
Nerds
Milk chocolate
kit kat
Chocolate
Kit Kat
Twix
Warheads
Twix
Skittles
Zotz
Crunch Bars
Gummy Bears
Sour patch kids
swedish fish
I really like mints
Twix
I don't like candy
Sour gummy worms
Buncha Crunch
Cotton candy
Reeses
Airheads
Jolly Ranchers  or any other clear  sweet or sour candy
I'm more of a gum person
Chocolate bar!
Sour patch kids
Chocolate
Sour Patch!
Mike and Ike
sour punches
Ice Cream Mochi
skittles
Reeses
Toffee
Nerds
Sour gummy worms
Gummy bears
chocolate
gummy candy
Twix
oreos
Kit Kat
Haribo gummy bears
Pretzel M&M's
jolly ranchers
Skittles
M&M
Pulse (Indian Mango flavored candy)
mm
Rips

我现在要做的是找出“你最喜欢的糖果是什么?”这个问题的三个最常见的答案是什么? (不区分大小写)。我正在尝试按以下方式格式化我的输出(XX 是计数):

XX Candy1
XX Candy2
XX Candy3

我尝试使用grep,但我完全不确定如何计算每个实例并按排序顺序输出三个最受欢迎的答案。我对 Linux 终端还是比较陌生。感谢任何建议或反馈,以帮助我更好地理解 Linux 命令。

【问题讨论】:

  • sort result | uniq -c | sort -n | tail -n 3
  • 哇,几秒钟之内!除了你的答案以相反的顺序排序
  • 是的。而且你会因为不必要地使用cat而被扣分;)
  • 哦,伙计,让我们成为朋友吧。我会听从你的建议,因为你是对的
  • 在了解每个命令的工作原理时,请一一学习。查看sort result 的输出,看到shat 正在通过管道传输到uniq -c,依此类推……

标签: linux unix terminal


【解决方案1】:
$ sort -f survey.txt | uniq -ic | sort -nr | head -n 3
      7 Twix
      5 Skittles
      4 Sour Patch Kids

工作原理

上面有四个计算步骤,用 3 个管道将链式输入连接到链式输出。

  1. survey.txt 的内容应用字母排序
  2. 使用uniq 删除了重复的连续行,并在第一个字段/列中插入了找到多少重复项的计数。
  3. 反向应用了数字排序。这对结果进行了正确排序。
  4. 前三行与head 一起保留,其余行被丢弃。

【讨论】:

  • 不区分大小写怎么办?例如有“Kit Kat”和“kit kat”
  • 奇怪的是sortuniq 不区分大小写的选项标志不同。
  • 如果需要区分大小写,最好使用awk 进行频率分析。
  • 已经完成了。没问题。
猜你喜欢
  • 1970-01-01
  • 2019-07-21
  • 2017-06-09
  • 2014-11-11
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多