@ Дэвид: Что вам в основном нужно, так это разница между двумя сетами. Это можно сделать намного проще, используя немного Python, как показано в методе 0 ниже. Метод 1 и 2 - это всего лишь два варианта, использующие индексированный и разреженный массив Bash. Выход для каждого из следующих методов: file2.txt
Метод-0:
#!/bin/bash
arr_a=( file1.txt file2.txt file3.txt )
arr_b=( file1.txt file3.txt )
echo -e "${arr_a[@]} \n ${arr_b[@]}" | python -c '\
a=set(raw_input().strip().split());\
b=set(raw_input().strip().split());\
(x,y)=(a,b) if len(a)>len(b) else (b,a);\
print "".join(list(x-y));'
Способ-1:
#!/bin/bash
arr_a=( file1.txt file2.txt file3.txt )
arr_b=( file1.txt file3.txt )
i=0
for a in ${arr_a[@]}
do
AinB=0
for b in ${arr_b[@]}
do
if [[ $a == $b ]]
then
AinB=1
fi
done
if [[ AinB -eq 0 ]]
then
arr_c[$((i++))]=$a
fi
done
echo ${arr_c[@]}
Способ-2:
#!/bin/bash
arr_a="file1.txt file2.txt file3.txt"
arr_b="file1.txt file3.txt"
arr_c=""
for a in $arr_a
do
isPresentInB=0
for b in $arr_b
do
if [[ $a == $b ]]
then
isPresentInB=1
break
fi
done
if [[ $isPresentInB -eq 0 ]]
then
arr_c="$arr_c $a"
fi
done
echo $arr_c