0

I use procmail to do extensive sorting on my inbox. My next to last recipe matches the incoming From: to a (very) long white/gold list of historically good email addresses, and patterns of email addresses. The recipe is:

# Anything on the goldlist goes straight to inbox
:0
* ? formail -zxFrom: -zxReply-To | fgrep -i -f $HOME/Mail/goldlist
{
  LOG="RULE Gold: "
  :0:
  $DEFAULT
}

The final recipe puts everything left in a suspect folder to be examined as probable spam. Goldlist is currenltty 7384 lines long (yikes...). Every once in a while, I get a piece of spam that has slipped through and I want to fix the failing pattern. I thought I read a while ago about a special flag in grep that helped show the matching patterns, but I can't find that again. Is there a way to use grep that shows the pattern from a file that matched the scanned text? Or another similar tool that would answer the question short of writing a script to scan pattern by pattern?

Lester Buck
  • 797
  • 6
  • 8

2 Answers2

2

grep -o will output only the matched text (as opposed to the whole line). That may help. Otherwise, I think you'll need to write a wrapper script to try one pattern at a time.

Jim Lewis
  • 43,505
  • 7
  • 82
  • 96
2

I'm not sure if this will help you or not. There is a "-o" parameter to output only the matching expression.

From the man page:

   -o, --only-matching
          Show only the part of a matching line that matches PATTERN.
firedfly
  • 2,299
  • 2
  • 22
  • 20