grep и вывести целое слово

@Kenneth: То же самое, но у тебя может быть другая проблема. Сообщение «аутентификация не включена» означает именно это. Попробуйте «postfconf smtpd_sasl_auth_enable», кажется, вы установили «нет» (по умолчанию) вместо «да», но в этом случае ваши законные клиенты также не смогут аутентифицироваться.

У меня не было таких клиентов, и я оставил «нет». Установка его на «да» позаботилась об уведомлениях об ошибках. Теперь я получаю в журналах только «Ошибка аутентификации LOGIN».

@SatoKatsura : предложение HELO/EHLO хорошее, это старый спамерский трюк. Но в данном случае это не поможет, так как правило ограничения обычно не сработает, пока клиент не завершит вход в систему и не достигнет этапа «RCPT TO». См. документы для «smtpd_delay_reject» (по умолчанию «да»).

0
01.09.2017, 21:55
4 ответа

Из man grep:

Повторение
За регулярным выражением может следовать один из нескольких операторов повторения:
 ...
 * Предыдущий элемент будет совпадать ноль или более раз.

Итак, вы хотите использовать что-то вроде

$ grep -o 'table\w*'

, где \w— любой непробельный символ, повторяющийся ноль или более раз.

0
28.01.2020, 02:19

Еще один подход, использующий lookbehind:

$ grep -P -o -e '(?<=^SELECT \* FROM )(.*$)' < 'file'
table_02323
table_231
table_1
0
28.01.2020, 02:19

Это будет соответствовать «таблице _», за которой следует 0 или более цифр ASCII:

grep -o 'table_[0-9]*' this.log
4
28.01.2020, 02:19

Используйте 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
0
28.01.2020, 02:19

Теги

Похожие вопросы