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

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

我想在 /var/log/secure 文件中仅显示电子邮件地址。电子邮件进入变量,因此仅搜索行是行不通的。

我知道如何将 sed 命令串联在一起,但有没有更简洁的方法?

如果有更简洁的方法来获取 ssh 密钥注释电子邮件,我甚至可以完全放弃这个想法。我正在寻找用于登录的客户端 ssh 密钥上的电子邮件注释。到目前为止,我一直在使用类似的东西。

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

我希望有更好的方法,或者至少有一种干净的方法来仅显示电子邮件。

答案1

为什么 grep 对你不起作用?它有一个-o参数,只获取匹配项。所以类似的东西grep -o " .+@.+ " /var/log/secure应该有效。只计算表达式以匹配电子邮件地址。

答案2

正如@Matteo 提到的,我从未见过公钥信息,/var/log/secure但如果您只想显示文本文件中的电子邮件地址,则可以使用egrep(用于扩展正则表达式)和-o选项,如下所示:

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

或者,如果您使用,则必须转义加号grep

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

您还可以这样做sed

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

相关内容