![Exiqgrep нечувствителен к регистру?](https://rvso.com/image/617273/Exiqgrep%20%D0%BD%D0%B5%D1%87%D1%83%D0%B2%D1%81%D1%82%D0%B2%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%BD%20%D0%BA%20%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D1%83%3F.png)
В настоящее время моя почтовая очередь заполнена сообщениями о недоставке для того же домена, но в смешанном регистре.
Я попытался использовать , exiqgrep
чтобы отфильтровать эти письма из моей очереди, но, похоже, команда чувствительна к регистру.Есть ли способ выполнить поиск без учета регистра?
решение1
Как указал другой джентльмен, программа exiqgrep — это просто скрипт perl. Она берет необработанное значение, переданное функции -r (получатель), и использует его в сопоставлении с образцом. Сопоставление с образцом — это простая $rcpt =~ /$opt{r}/
проверка perl, сопоставление по умолчанию, поскольку оно не указано, чувствительно к регистру.
Как и во всех вещах perl, TIMTOWTDI (There Is More Than One Way To Do It). Поскольку функция выше не удаляет и не очищает значение, переданное в -r, вы можете просто встроить модификатор игнорирования регистра в регулярное выражение. Подробнее perldoc perlre
о том, как (?MODIFIERS:...)
работает последовательность, см. .
Вот пример, в котором я показываю, что поиск в смешанном регистре не находит нужный мне домен, но при использовании встроенного модификатора флага как части поискового запроса он его находит.
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]
Ваш поиск будет похожим, например:
(?i:@thedomainyouseek.com)
решение2
Theстраница руководстване показывает такой опции, но exiqgrep
утилита представляет собой perl
скрипт, исходный код которого вы можетеизменить в соответствии с вашими потребностями:
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 }