Cha*_*les 3 bash shell gnu-toolchain uniq linux-toolchain
我有一个大文件(50 GB),我想计算其中不同行的出现次数.通常我会用
sort bigfile | uniq -c
Run Code Online (Sandbox Code Playgroud)
但是文件足够大,以至于排序需要大量的时间和内存.我可以
grep -cfx 'one possible line'
Run Code Online (Sandbox Code Playgroud)
对于文件中的每个唯一行,但这意味着n为每个可能的行传递文件,这(虽然更多的内存友好)比原始行更长.
有任何想法吗?
一个相关的问题询问在大文件中找到唯一行的方法,但我正在寻找一种方法来计算每个实例的数量 - 我已经知道可能的行是什么.
使用 awk
awk '{c[$0]++} END {for (line in c) print c[line], line}' bigfile.txt
Run Code Online (Sandbox Code Playgroud)
这是时间上的O(n),以及空间中的O(唯一线).