![Exiqgrep sem distinção entre maiúsculas e minúsculas?](https://rvso.com/image/617273/Exiqgrep%20sem%20distin%C3%A7%C3%A3o%20entre%20mai%C3%BAsculas%20e%20min%C3%BAsculas%3F.png)
Minha fila de e-mail está cheia de mensagens devolvidas para o mesmo domínio, mas em letras maiúsculas e minúsculas.
Tentei exiqgrep
filtrar esses e-mails da minha fila, mas parece que o comando diferencia maiúsculas de minúsculas.Existe alguma maneira de realizar uma pesquisa que não diferencia maiúsculas de minúsculas?
Responder1
Como o outro senhor apontou, o programa exiqgrep é apenas um script perl. Ele pega o valor bruto passado para a função -r (destinatário) e o utiliza em uma correspondência de padrão. A correspondência de padrão é um teste perl simples $rcpt =~ /$opt{r}/
, a correspondência padrão, uma vez que não é especificada, diferencia maiúsculas de minúsculas.
Tal como acontece com todas as coisas perl, TIMTOWTDI (há mais de uma maneira de fazer isso). Como a função acima não elimina ou limpa o valor passado para -r, você pode simplesmente incorporar um modificador de caso ignorado no regex. Veja perldoc perlre
para mais detalhes sobre como (?MODIFIERS:...)
funciona a sequência.
Aqui está um exemplo onde mostro que uma pesquisa de casos mistos não encontra o domínio que estou procurando, mas usando um modificador de sinalizador embutido como parte do termo de pesquisa, ela o encontra.
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]
Sua pesquisa será semelhante, algo como:
(?i:@thedomainyouseek.com)
Responder2
Opágina de manualnão mostra essa opção, mas o exiqgrep
utilitário é um perl
script cuja fonte você podemodifique para atender às suas necessidades:
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 }