寻找uniq -c替代大文件

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为每个可能的行传递文件,这(虽然更多的内存友好)比原始行更长.

有任何想法吗?


一个相关的问题询问在大文件中找到唯一行的方法,但我正在寻找一种方法来计算每个实例的数量 - 我已经知道可能的行是什么.

Bar*_*mar 8

使用 awk

awk '{c[$0]++} END {for (line in c) print c[line], line}' bigfile.txt
Run Code Online (Sandbox Code Playgroud)

这是时间上的O(n),以及空间中的O(唯一线).