比较bash中唯一的常见元素

时间:2014-03-06 22:39:54

标签: arrays bash

我有两个这样的数组:

a=(1 2 2 1)
b=(3 1 1 1)

我想计算它们中唯一的共同元素。例如,上面的结果是1

修改 文件:

 a=(1 2 2 1)
 b=(3 1 2 1)
 grep -f <(printf "%s\n" "${a[@]}") < <(printf "%s\n" "${b[@]}") | uniq

运行:      ./test.sh

结果:

  source test.sh 
    1
    2
    1

1 个答案:

答案 0 :(得分:1)

使用grepsort -u

grep -f <(printf "%s\n" "${a[@]}") <(printf "%s\n" "${b[@]}") | sort -u 
1

备用awk命令:

awk 'FNR==NR{a[$0];next} $0 in a && !($0 in b){b[$0]} 
         END{for (i in b) print i}' <(printf "%s\n" "${a[@]}") <(printf "%s\n" "${b[@]}")
1