【发布时间】:2020-06-09 22:55:25
【问题描述】:
不要盲目地从数组中删除重复项。
我想打印给定数组可能具有的所有重复值。
当我使用这个命令时:
printf '%s\n' "${arr[@]}" | awk '!($0 in seen){seen[$0];print $0}'
...它打印出所有唯一值,并将重复的值排除在外。
预计会适得其反,但没有得到任何结果:
printf '%s\n' "${arr[@]}" | awk '($0 in seen){seen[$0];print $0}'
示例输入:
arr=(1 2 2 3)
预期输出:
2
编辑
现在,这似乎有效。让它打开一天左右,以防有人有更好的方法......
array=($arr)
for value in ${array[@]}; do
[[ $(grep "${value}" $(echo ${(F)arr} | wc -l) -gt 1 ]] && echo $value;
done
【问题讨论】:
-
print -l $arr|sort|uniq -d是我通常这样做的方式。
标签: arrays duplicates zsh