我对 Linux 还算是个新手,但是我花了很多时间尝试弄清楚如何筛选我的 qmail 日志文件。
此时,我想要做的是进行搜索,只输出 qmail-local-handlers 后面方括号内的内容。例如,取我的日志片段中的第一行...
(10月3日 10:17:21 125388-web2 qmail-local-handlers[18145]:[电子邮件保护])
...我希望它输出 18145。
我不确定我可以运行哪些命令来获得我想要的结果。有人能帮忙吗?
以下是我正在使用的一些示例数据,希望对您有帮助。非常感谢!
10月3日 10:17:21 125388-web2 qmail-local-handlers[18145]:[电子邮件保护]| 10月3日 10:29:14 125388-web2 qmail-local-handlers[22908]:[电子邮件保护]| 10月3日 10:29:30 125388-web2 qmail-local-handlers[23017]:[电子邮件保护]| 10月3日 10:30:58 125388-web2 qmail-local-handlers[23815]:[电子邮件保护]| 10月3日 10:31:04 125388-web2 qmail-local-handlers[23861]:[电子邮件保护]| 10月3日 12:06:52 125388-web2 qmail-local-handlers[30174]:[电子邮件保护]| 10月3日 12:07:03 125388-web2 qmail-local-handlers[30240]:[电子邮件保护]| 10月3日 12:19:05 125388-web2 qmail-local-handlers[3243]:[电子邮件保护]|
答案1
这将抓取(第一对)方括号之间的数字:
sed "s/.*\[\([0-9]\+\)\].*/\1/" logfile
答案2
你有没有尝试过:
cut -d '[' -f 2 LOGFILE | cut -d ']' -f 1