【发布时间】:2014-03-27 18:01:52
【问题描述】:
我有一小段代码
egrep -oh '([A-Z]+)_([A-Z]+)_([A-Z]+)' -R /path | uniq | sort
当我不想显示任何重复项时,我使用此脚本挖掘存储在公共目录中的文件中的环境变量,但我只想要任何变量的名称(如果有的话)。
不用说正则表达式有效,匹配的单词是由 3 个大写字母 *_*_* 的子集组成的单词,问题是 uniq 看起来不像它的工作和做任何事情,变量会在egrep 找到它们时打印出来。
即使uniq -u 也不能解决问题。
管道本身有问题吗?
【问题讨论】:
-
你的
sort和uniq的顺序颠倒了。 -
顺序颠倒了。
... | sort | uniq -
先排序,再uniq
-
@BroSlow 为什么?
uniq不缓存结果? -
@user2485710 不是缓存结果,
uniq会检查相邻的值,所以需要先排序。