【问题标题】:Sorting and counting method faster then cat file | sort | uniq -c排序和计数方法比cat文件更快|排序 |唯一的-c
【发布时间】:2012-03-25 10:39:10
【问题描述】:

我有以下脚本可以解析一些 |分隔的字段/值对。样本数据看起来像 |苹果=32.23|香蕉=1232.12|葡萄=12312|梨=231|葡萄=1231|

我只是想计算 A、B 或 C 字段名称在日志文件中出现的次数。字段列表需要是动态的。日志文件“大”,每个大约 500 兆,因此对每个文件进行排序需要一段时间。进行剪切并获得每行一个字段的文件后,是否有更快的方法来进行计数?

 cat /bb/logs/$dir/$file.txt | tr -s "|" "\n" | cut -d "=" -f 1 | sort | uniq -c > /data/logs/$dir/$file.txt.count

我知道这部分运行速度很快。我可以肯定地看到它陷入了困境。

cat /bb/logs/$dir/$file.txt | tr -s "|" "\n" | cut -d "=" -f 1 

在我运行剪切后,下面是一个示例输出,当然文件要长得多

Apple
Banana
Grape
Pear
Grape

排序和计数后我得到

 1 Apple
 1 Banana 
 1 Pear
 2 Grape

问题是我的实际数据的排序时间太长了。我认为 > 将剪切输出到文件会更快,但不确定计算“大”文本文件中唯一条目的最快方法

【问题讨论】:

  • 发布一些示例数据和您想要的 o/p
  • 好吧.. 应该没问题
  • cat file | sort快的是sort file

标签: sorting cat uniq


【解决方案1】:

AWK不用排序也能做的很好,试试这个,应该会更好;

cat test.txt | tr -s "|" "\n" | cut -d "=" -f 1 |
   awk '{count[$1]++}END{for(c in count) print c,"found "count[c]" times."}' 

【讨论】:

  • 谢谢.. 将在几分钟内使用示例集尝试此操作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-24
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多