我有一个ksh脚本,它返回一个很长的值列表,其中以换行符分隔,并且我只想看到唯一/不同的值。这样做是可能的吗?
例如,假设我的输出是目录中的文件后缀:
tar gz java gz java tar类
我希望看到这样的列表:
tar gz java类
发布于 2009-03-06 14:44:08
./script.sh | sort -u
这与monoxide's answer相同,但更简洁一些。
发布于 2009-03-06 12:06:34
使用zsh,您可以执行以下操作:
% 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:
% awk '!_[$0]++' infile
tar
more than one word
gz
java
class
发布于 2009-03-06 11:02:43
对于可能不需要排序的较大数据集,您还可以使用以下perl脚本:
./yourscript.ksh | perl -ne 'if (!defined $x{$_}) { print $_; $x{$_} = 1; }'
这基本上只是记住每一行输出,这样它就不会再次输出它。
与"sort | uniq
“解决方案相比,它的优势在于不需要预先排序。
https://stackoverflow.com/questions/618378
复制相似问题