我有一个程序会产生大量冗余信息。我只想存储 上生成的唯一行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
解决方案没有,因此如果内存使用是一个问题,那么它可能不合适。