Exiqgrep ohne Berücksichtigung der Groß-/Kleinschreibung?

Exiqgrep ohne Berücksichtigung der Groß-/Kleinschreibung?

Meine Mail-Warteschlange ist derzeit voller Bounce-Nachrichten für dieselbe Domäne, allerdings in gemischter Groß- und Kleinschreibung.

Ich habe versucht, exiqgrepdiese E-Mails aus meiner Warteschlange zu filtern, aber der Befehl scheint zwischen Groß- und Kleinschreibung zu unterscheiden.Gibt es eine Möglichkeit, eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung durchzuführen?

Antwort1

Wie der andere Herr bereits sagte, ist das Programm exiqgrep nur ein Perl-Skript. Es nimmt den an die Funktion -r (Empfänger) übergebenen Rohwert und verwendet ihn für einen Mustervergleich. Der Mustervergleich ist ein einfacher $rcpt =~ /$opt{r}/Perl-Test, der Standardvergleich ist, da er nicht angegeben ist, case-sensitiv.

Wie bei allen Dingen in Perl gilt TIMTOWTDI (There Is More Than One Way To Do It). Da die obige Funktion den an -r übergebenen Wert nicht entfernt oder bereinigt, können Sie einfach einen Modifikator zum Ignorieren der Groß-/Kleinschreibung in den regulären Ausdruck einbetten. perldoc perlreWeitere Einzelheiten zur Funktionsweise der (?MODIFIERS:...)Sequenz finden Sie unter.

Hier ist ein Beispiel, in dem ich zeige, dass eine Suche mit gemischter Groß- und Kleinschreibung die gesuchte Domäne nicht findet, sie aber durch die Verwendung eines Inline-Flag-Modifikators als Teil des Suchbegriffs gefunden wird.

OVZ-CentOS58[root@ivwm51 ~]# exiqgrep -r '[email protected]'
26h  4.0K 1VGRud-0001sm-P1 <> *** frozen ***
      [email protected]

OVZ-CentOS58[root@ivwm51 ~]# exiqgrep -r '[email protected]'
OVZ-CentOS58[root@ivwm51 ~]# exiqgrep -r '(?i:[email protected])'
26h  4.0K 1VGRud-0001sm-P1 <> *** frozen ***
      [email protected]

Ihre Suche wird ähnlich sein, etwa so:

(?i:@thedomainyouseek.com)

Antwort2

Dermanpagezeigt diese Option nicht an, aber das exiqgrepDienstprogramm ist ein perlSkript, dessen Quelle SiePassen Sie es Ihren Bedürfnissen an:


114 sub selection() {
115   foreach my $msg (keys(%id)) {
116     if ($opt{f}) {
117       # Match sender address
118       next unless ($id{$msg}{from} =~ /$opt{f}/); # here
119     }
120     if ($opt{r}) {
121       # Match any recipient address
122       my $match = 0;
123       foreach my $rcpt (@{$id{$msg}{rcpt}}) {
124         $match++ if ($rcpt =~ /$opt{r}/); # or here
125       }
126       next unless ($match);
127     }
128     if ($opt{s}) {
129       # Match against the size string.
130       next unless ($id{$msg}{size} =~ /$opt{s}/);
131     }
132     if ($opt{y}) {
133       # Match younger than
134       next unless ($id{$msg}{ages}  $opt{o});
139     }
140     if ($opt{z}) {
141       # Exclude non frozen
142       next unless ($id{$msg}{frozen});
143     }
144     if ($opt{x}) {
145       # Exclude frozen
146       next if ($id{$msg}{frozen});
147     }
148     # Here's what we do to select the record.
149     # Should only get this far if the message passed all of
150     # the active tests.
151     $id{$msg}{d} = 1;
152     # Increment match counter.
153     $mcount++;
154   }
155 }

verwandte Informationen