我只想在/ var / log / secure文件中显示电子邮件地址。 电子邮件进入一个variables,所以只是grepping线路将无法正常工作。
我知道如何将sed命令串在一起,但有没有更清晰的方法?
如果有一个更清晰的方式来获得ssh关键评论电子邮件,我甚至可以完全废除这个想法。 我正在寻找哪个电子邮件评论,在客户端SSH密钥,被用来login。 到目前为止,我一直在使用这样的东西..
ssh root@localhost "sleep 1 ; tail -1 /var/log/secure | ..."
我希望有一个更好的方法,或者至less一个干净的方式来显示电子邮件。
为什么不grep为你工作? 它有-o
参数来获得唯一的匹配。 所以像grep -o " .+@.+ " /var/log/secure
应该可以工作。 只编制expression式来匹配电子邮件地址。
正如@Matteo提到的,我从来没有在/var/log/secure
看到公钥信息,但是如果你只想从文本文件中显示电子邮件地址,你可以使用egrep
(用于扩展正则expression式)和-o
选项,喜欢这个:
$ egrep -o '[^ ]+@[^ ]+' input
或者如果你使用grep
你必须逃避加号:
$ grep -o '[^ ]\+@[^ ]\+' input
你也可以用sed
来做:
$ sed -nr 's/.* ([^ ]+@[^ ]+).*$/\1/p' input