我目前正在尝试从
maillog
中提取所有发件人域。我可以使用以下命令执行其中一些操作,但输出并不完全是我想要的。从邮件日志中检索发件人域的唯一列表的最佳方法是什么?
grep from= /var/log/maillog |
awk '{print $7}' |
sort | uniq -c | sort -n
输出:
1 from=<[email protected]>,
1 from=<[email protected]>,
2 from=<[email protected]>,
2 from=<[email protected]>,
12 reject:
666 from=<>,
所需输出:
test.com
app1.com
example.com
这应该给你答案:
grep from= /var/log/maillog | awk '{print $7}' | grep -Po '(?=@).{1}\K.*(?=>)' | sort -n | uniq -c
...将最后一项更改为“| sort | uniq”以删除计数。
参考资料:
https://www.baeldung.com/linux/bash-remove-first-characters {1}\K 使用
使用 grep 或 sed 从日志中提取电子邮件地址 -Po grep 函数