2014-03-06 133 views
1

我有兩個數組是這樣的:比較常見的元素

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

使用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 
+0

我想要一個結果,請參見編輯 – alex

+0

上面所示的grep輸出只有一個結果'1',還看到我的awk命令。 – anubhava

+0

我有3個'grep'命令的結果。爲什麼? a =(2 2 1 1)和b =(0 1 2 1) – alex