Оболочка Unix должна получить элементы из setA, которые отсутствуют в SetB - PullRequest
0 голосов
/ 29 июня 2018

Я использую sh Shell (устаревшие требования) У меня есть такой набор

Set A --> 'A.txt B.txt C.txt D.txt E.txt' 
and another set like 
Set B --> 'A.txt D.txt'

Если я хочу найти элементы, которые присутствуют в наборе B, но отсутствуют в наборе A

setA='A.txt B.txt C.txt D.txt E.txt'
setB='A.txt D.txt'

echo $setA |grep -v -w $setB

Моя попытка не дает никаких результатов

1 Ответ

0 голосов
/ 29 июня 2018

Вы можете попробовать следующее:

for i in $setB; do 
  if ! echo "$setA" | grep -q "$i";  then 
    echo "$i is not in setA"
  fi
done

Если у вас есть bash, вы можете попробовать это:

for i in $setB; do [[ "$setA" =~ "$i" ]] || echo "$i is not in setA"; done

Оператор =~ используется для проверки того, является ли элемент setB частью setA.

Учитывая 2 набора, совпадения нет, потому что вы спросили элементов, которые присутствуют в наборе B, но отсутствуют в наборе A .

Если вы расширяете setB другим элементом, подобным этому:

setB='A.txt D.txt F.txt'

и тогда вы получите

$ for i in $setB; do [[ "$setA" =~ "$i" ]] || echo "$i is not in setA"; done
F.txt is not in setA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...