Я хочу отобразить только адрес электронной почты в файле / 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