Как определить, какой шаблон в файле соответствует grep?

Я использую procmail, чтобы сделать обширную сортировку на моем почтовом ящике. Мой следующий к последнему рецепту соответствует входящий От: (очень) длинный белый / золотой список исторически хороших адресов электронной почты и шаблонов адресов электронной почты. Рецепт:

# Все в списке попадет прямо во входящие:0
*? formail -zxFrom: -zxReply-To | fgrep -i -f $HOME/Mail/goldlist
{
  LOG="RULE Gold: ":0:
  $DEFAULT
}

Окончательный рецепт помещает все, что осталось в подозрительной папке, для проверки на возможный спам. Goldlist - это всего 7384 строки (yikes...). Время от времени я получаю кусок спама, который проскальзывает, и я хочу исправить ошибочный шаблон. Я думал, что читал некоторое время назад о специальном флаге в grep, который помог показать подходящие шаблоны, но я не могу найти это снова. Есть ли способ использовать grep, который показывает шаблон из файла, который соответствует отсканированному тексту? Или другой подобный инструмент, который ответил бы на вопрос, кроме написания сценария для сканирования шаблон за шаблоном?

2 ответа

Решение

grep -o выведет только сопоставленный текст (в отличие от всей строки). Это может помочь. В противном случае, я думаю, вам нужно написать скрипт-обертку, чтобы попробовать один шаблон за раз.

Я не уверен, поможет ли это вам или нет. Существует параметр "-o" для вывода только соответствующего выражения.

Со страницы руководства:

   -o, --only-matching
          Show only the part of a matching line that matches PATTERN.
Другие вопросы по тегам