在文件中显示特定的单词。 在日志中用作电子邮件的variables,grep

我只想在/ 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