![有状态的 uniq 功能](https://linux22.com/image/65915/%E6%9C%89%E7%8A%B6%E6%80%81%E7%9A%84%20uniq%20%E5%8A%9F%E8%83%BD.png)
我有一个程序会产生大量冗余信息。我只想存储 上生成的唯一行stdout
,但我无法分多个步骤执行此操作,例如:
./prog > out cat out | sort | uniq > out2
out
文件太大了。我怎样才能实现“有状态的uniq”功能,其中stateful_uniq
会消耗行并仅发出以前没有看到的行?
答案1
没有./prog | sort | uniq > out2
做你想做的事?或者即使./prog | sort -u > out2
你sort
支持它......
要查看出现的唯一行而不对输出进行排序,您可以使用关联数组awk
:
./prog | awk '!(count[$0]++)'
正如所指出的斯蒂芬·查泽拉斯,sort
使用临时文件限制其内存使用;该awk
解决方案没有,因此如果内存使用是一个问题,那么它可能不合适。