Здесь используется grep, чтобы увидеть, нужно ли удалить слово, но это не чисто BASH и, вероятно, быстрее, чем другой вариант (см. Ниже).
#!/bin/bash
REMOVE="package-x86 test0 hello world"
WORDBAG="computer hello sizeof compiler world package-x86 rocks test0"
OFS=$IFS
IFS=" "
WORDBAG_ARRAY=($WORDBAG)
IFS=$OFS
RESULT=""
for str2 in ${WORDBAG_ARRAY[@]}
do
echo $REMOVE | grep $str2 >/dev/null
if [[ $? == 1 ]] #Not Found
then
RESULT="$RESULT $str2"
fi
done
echo $RESULT
Это немного многословно, использует массивы BASH, O (N * M), но работает.
#!/bin/bash
REMOVE="package-x86 test0 hello world"
WORDBAG="computer hello sizeof compiler world package-x86 rocks test0"
OFS=$IFS
IFS=" "
REMOVE_ARRAY=($REMOVE)
WORDBAG_ARRAY=($WORDBAG)
IFS=$OFS
RESULT=""
for str2 in ${WORDBAG_ARRAY[@]}
do
found=0
for str1 in ${REMOVE_ARRAY[@]}
do
if [[ "$str1" == "$str2" ]]
then
found=1
fi
done
if [[ $found == 0 ]]
then
RESULT="$RESULT $str2"
fi
done
echo $RESULT