@Kenneth: То же самое, но у тебя может быть другая проблема. Сообщение «аутентификация не включена» означает именно это. Попробуйте «postfconf smtpd_sasl_auth_enable», кажется, вы установили «нет» (по умолчанию) вместо «да», но в этом случае ваши законные клиенты также не смогут аутентифицироваться.
У меня не было таких клиентов, и я оставил «нет». Установка его на «да» позаботилась об уведомлениях об ошибках. Теперь я получаю в журналах только «Ошибка аутентификации LOGIN».
@SatoKatsura : предложение HELO/EHLO хорошее, это старый спамерский трюк. Но в данном случае это не поможет, так как правило ограничения обычно не сработает, пока клиент не завершит вход в систему и не достигнет этапа «RCPT TO». См. документы для «smtpd_delay_reject» (по умолчанию «да»).
Из man grep
:
Повторение За регулярным выражением может следовать один из нескольких операторов повторения: ... * Предыдущий элемент будет совпадать ноль или более раз.
Итак, вы хотите использовать что-то вроде
$ grep -o 'table\w*'
, где \w
— любой непробельный символ, повторяющийся ноль или более раз.
Еще один подход, использующий lookbehind:
$ grep -P -o -e '(?<=^SELECT \* FROM )(.*$)' < 'file'
table_02323
table_231
table_1
Это будет соответствовать «таблице _», за которой следует 0 или более цифр ASCII:
grep -o 'table_[0-9]*' this.log
Используйте GNU grep
, как показано ниже:
grep -oiP 'FROM\s*\K\w+' infile
Не -GNU:
grep -ioP 'FROM[ ]*\K[A-Z_0-9]+' infile
Это гарантирует, что вы просто получаете имя таблицы.
Тест:
grep -ioP 'FROM\s*\K\w+' <<<"SELECT * FROM table_02323 where 1=1"
table_02323