2017-02-10 5 views
0

У меня есть 2 переменные, которые содержат список пользователейСравнивая 2 списка пользователей в Баш

echo $old_users 

1 
2 
3 
4 
5 
6 

echo $new_users 

1 
2 
3 
4 

Я хочу знать, какие пользователи из списка old_users были удалены в списке new_users (здесь пользователя 5 и 6) , Это то, что я написал до сих пор, но я все еще что-то пропустил:

echo $old_users | while read line 
do 
    if echo "$new_users"| grep "$line" 
then 
    echo "$line user was removed" 
else 
    echo "$line user is still there" 
fi 
done 

Любая помощь приветствуется! Спасибо

+1

Используйте 'Grep -vFxf new_users old_users' – anubhava

+1

Вам нужно процитировать' $ old_users' сохранить какие-либо переводы строк, содержащихся в значении; в противном случае цикл 'while' видит только одну строку ввода. – chepner

+0

Получил! большое спасибо –

ответ

0
for line in $old_users 
do 
if echo "$new_users"| grep "$line" #[ You can use grep -w for exact match here ] 
then 
    echo "$line user was removed" 
else 
    echo "$line user is still there" 
fi 
done 

Надеюсь, что это сработает сейчас.

0

Это несколько похоже на https://superuser.com/a/135180. Поэтому использование этого здесь может быть полезным. Это займет заданную разницу old_users - new_users.

diff --changed-group-format='%<' --unchanged-group-format='' <(echo $old_users) <(echo $new_users) 
Смежные вопросы