有状态的 uniq 功能

有状态的 uniq 功能

我有一个程序会产生大量冗余信息。我只想存储 上生成的唯一行stdout,但我无法分多个步骤执行此操作,例如: ./prog > out cat out | sort | uniq > out2

out文件太大了。我怎样才能实现“有状态的uniq”功能,其中stateful_uniq会消耗行并仅发出以前没有看到的行?

答案1

没有./prog | sort | uniq > out2做你想做的事?或者即使./prog | sort -u > out2sort支持它......

要查看出现的唯一行而不对输出进行排序,您可以使用关联数组awk

./prog | awk '!(count[$0]++)'

正如所指出的斯蒂芬·查泽拉斯sort使用临时文件限制其内存使用;该awk解决方案没有,因此如果内存使用是一个问题,那么它可能不合适。

相关内容