我有以下脚本可以解析一些 | 分隔的字段/值对。示例数据类似于 |Apple=32.23|Banana =1232.12|Grape=12312|Pear=231|Grape=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
问题是我的实际数据的排序时间太长了。我认为 > 将剪切输出到文件会更快,但不确定计算“大”文本文件中唯一条目的最快方法