我有一小段代码
egrep -oh '([A-Z]+)_([A-Z]+)_([A-Z]+)' -R /path | uniq | sort
当我不想显示任何副本时,我使用此脚本来搜索存储在公共目录中的文件中的环境变量,但我只想要任何变量的名称(如果有的话)。
不用说正则表达式有效,匹配的单词是由大写*_*_*
的3个字母子集组成的单词,问题是uniq
看起来不像它的工作和做任何事情,变量只是在egrep
找到它们时打印出来。
甚至uniq -u
都不行。
管道本身就是问题吗?
答案 0 :(得分:3)
uniq要求对其输入进行排序。来自man page:(强调我的)
说明:过滤相邻匹配行
所以你可以在sort
之前在管道中添加uniq
,但这不是必需的,你只需使用-u
标志sort
来输出排序输出中的唯一行:
egrep -oh '([A-Z]+)_([A-Z]+)_([A-Z]+)' -R /path | sort -u