脚本命令
shell求交、并和差集1 2 3 4 5 6 7 8 9 10 11 12 13 14
| file_list_1=("test1" "test2" "test3" "test4" "test5" "test6") file_list_2=("test5" "test6" "test7" "test8")
file_list_union=(`echo ${file_list_1[*]} ${file_list_2[*]}|sed 's/ /\n/g'|sort|uniq`) echo ${file_list_union[*]}
file_list_inter=(`echo ${file_list_1[*]} ${file_list_2[*]}|sed 's/ /\n/g'|sort|uniq -c|awk '$1!=1{print $2}'`) echo ${file_list_inter[*]}
file_list_4=(`echo ${file_list_1[*]} ${file_list_2[*]}|sed 's/ /\n/g'|sort|uniq -c|awk '$1==1{print $2}'`) echo ${file_list_4[*]}
|
命令解释
在上述三条命令中,首先使用echo
输出由两个数组构成的集合,然后使用sed
将空格替换成换行符\n
,
再使用sort
排序:
- 使用
uniq
处理则获得并集.
- 使用
uniq -c
处理则.
再使用awk
分析第一个参数$1
若不等于1
就表示这是两个数组中,于是打印$2
便得到交集.
- 使用
uniq -c
处理则.
再使用awk
分析第一个参数$1
若等于1
就表示这是两个数组中,于是打印$2
便得到差集.
命令参考
执行结果
执行结果1 2 3
| test1 test2 test3 test4 test5 test6 test7 test8 test5 test6 test1 test2 test3 test4 test7 test8
|