Grep -v -f имя файла не работает на одном сервере
Я запускал сценарий для извлечения адресов получателей почты Exchange и обновления моей локальной таблицы postfix relay_recipients в течение многих лет. Скрипт взят из The Book of Postfix, до сих пор работал безупречно.
Ключевая строка, которая вызывает проблемы, по-прежнему отлично работает на одном сервере, но дает пустой результат на другом.
cat /home/username/mailrecipients.txt extra_recipients | tr -d \" | tr , \\n | tr \; \\n | tr -d '\r' | awk -F\: '/(SMTP|smtp):/ {printf("%s\tOK\n",$2)}' | grep -vi --file=blacklist
Сценарий объединяет некоторые жестко заданные адреса с файлами получателей почты, удаляет ненужные данные и создает длинный список адресов электронной почты с ОК и новой строкой. Все отлично работает вплоть до grep. На одном сервере передача вывода в grep с обратным соответствием шаблонам, содержащимся в файле черного списка, удаляет адреса, которые мне не нужны, и возвращает остальные правильно. На другом сервере с той же версией grep я получаю пустой результат. Три файла (черный список, mailrecipients.txt и extra_recipients) идентичны на обоих серверах.
Любые идеи о том, что здесь происходит?
РЕДАКТИРОВАТЬ: вывод команды awk перед grep:
email1@mycompany.com OK
email2@mycompany.com OK
email3@mycompany.com OK
restricted@mycompany.com OK
файл черного списка: ограниченный
Ожидаемый результат:
email1@mycompany.com OK
email2@mycompany.com OK
email3@mycompany.com OK
Один сервер возвращает это правильно, а другой сервер возвращает пустой набор.