Назад | Перейти на главную страницу

Показать конкретное слово в файле. Для использования в качестве переменной grep для электронной почты в журнале

Я хочу отобразить только адрес электронной почты в файле / var / log / secure. Электронное письмо помещается в переменную, поэтому просто поиск по строкам работать не будет.

Я знаю, как объединить команды sed, но есть ли более чистый способ?

Я мог бы даже полностью отказаться от этой идеи, если есть более чистый способ получать электронные письма с комментариями по ssh. Я хочу узнать, какой комментарий по электронной почте для ключа ssh клиента использовался для входа в систему. Пока использую что-то вроде этого ..

 ssh root@localhost  "sleep 1 ; tail -1 /var/log/secure | ..."

Я надеюсь, что есть лучший способ или, по крайней мере, чистый способ отображения только электронной почты.

Почему у вас не работает grep? Он имеет -o параметр, чтобы получить только совпадение. Так что-то вроде grep -o " .+@.+ " /var/log/secure должно сработать. Разработайте только выражение, соответствующее адресу электронной почты.

Как упоминал @Matteo, я никогда не видел информацию об открытом ключе в /var/log/secure но если вы хотите отображать только адрес электронной почты из текстового файла, вы можете использовать egrep (для расширенного регулярного выражения) с -o вариант, примерно так:

$ egrep -o '[^ ]+@[^ ]+' input

или вы должны избежать плюса, если вы используете grep:

$ grep -o '[^ ]\+@[^ ]\+' input

Вы также можете сделать это с помощью sed:

$ sed -nr 's/.* ([^ ]+@[^ ]+).*$/\1/p' input