首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从UNIX shell脚本的列表中选择唯一或不同的值

从UNIX shell脚本的列表中选择唯一或不同的值
EN

Stack Overflow用户
提问于 2009-03-06 10:33:38
回答 7查看 361.2K关注 0票数 286

我有一个ksh脚本,它返回一个很长的值列表,其中以换行符分隔,并且我只想看到唯一/不同的值。这样做是可能的吗?

例如,假设我的输出是目录中的文件后缀:

tar gz java gz java tar类

我希望看到这样的列表:

tar gz java类

EN

回答 7

Stack Overflow用户

发布于 2009-03-06 14:44:08

代码语言:javascript
复制
./script.sh | sort -u

这与monoxide's answer相同,但更简洁一些。

票数 102
EN

Stack Overflow用户

发布于 2009-03-06 12:06:34

使用zsh,您可以执行以下操作:

代码语言:javascript
复制
% cat infile 
tar
more than one word
gz
java
gz
java
tar
class
class
zsh-5.0.0[t]% print -l "${(fu)$(<infile)}"
tar
more than one word
gz
java
class

或者您可以使用AWK:

代码语言:javascript
复制
% awk '!_[$0]++' infile    
tar
more than one word
gz
java
class
票数 13
EN

Stack Overflow用户

发布于 2009-03-06 11:02:43

对于可能不需要排序的较大数据集,您还可以使用以下perl脚本:

代码语言:javascript
复制
./yourscript.ksh | perl -ne 'if (!defined $x{$_}) { print $_; $x{$_} = 1; }'

这基本上只是记住每一行输出,这样它就不会再次输出它。

与"sort | uniq“解决方案相比,它的优势在于不需要预先排序。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/618378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档