Sorting 排序和计数方法比cat文件| sort | uniq-c更快
下面的脚本解析了一些|分隔的字段/值对。示例数据看起来像 |苹果=32.23 |香蕉=1232.12 |葡萄=12312 |梨=231 |葡萄=1231| 我只是想计算A、B或C字段名在日志文件中出现的次数。字段列表需要是动态的。日志文件“很大”,每个文件大约500兆,因此对每个文件进行排序需要一些时间。有没有一个更快的方法来做计数,一旦我做了削减,并得到一个文件与一个字段每行Sorting 排序和计数方法比cat文件| sort | uniq-c更快,sorting,cat,uniq,Sorting,Cat,Uniq,下面的脚本解析了一些|分隔的字段/值对。示例数据看起来像 |苹果=32.23 |香蕉=1232.12 |葡萄=12312 |梨=231 |葡萄=1231| 我只是想计算A、B或C字段名在日志文件中出现的次数。字段列表需要是动态的。日志文件“很大”,每个文件大约500兆,因此对每个文件进行排序需要一些时间。有没有一个更快的方法来做计数,一旦我做了削减,并得到一个文件与一个字段每行 cat /bb/logs/$dir/$file.txt | tr -s "|" "\n" | cut -d "="
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
问题是我实际数据的排序时间太长。我认为将剪切输出>到一个文件会更快,但不确定在“大”文本文件中计算唯一条目的最快方法是否可以在不排序的情况下很好地完成,试试这个,它的性能应该会更好
cat test.txt | tr -s "|" "\n" | cut -d "=" -f 1 |
awk '{count[$1]++}END{for(c in count) print c,"found "count[c]" times."}'
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."}'
发布一些示例数据和您所需的o/pokay。。比cat文件| sort更快的应该是
排序文件
。发布一些示例数据和所需的o/pokay。。比cat文件排序更快的应该是排序文件
。谢谢。。我将在几分钟内用一个样本集来尝试此方法Hanks。。我将在几分钟内尝试使用示例集