Bash 脚本中的换行符

Bash 脚本中的换行符

需要每小时检查一次日志文件以查找“无法连接到 ldap”,我每小时在 cron 中输入此脚本:

#!/bin/bash
> result
cat logfile.log | grep -a 'unable to connect to the ldap' > result
if [ -s result ]
then
 echo -e "Attention! Missing ldap connection at " "\n" `cut -c-24 result`
fi
exit 0

它确实完成了它的工作,只是格式很糟糕,就像这样:

Attention! Missing ldap connection at
2022-05-25 20:35:53,293 2022-05-25 20:35:53,294 2022-05-25 20:35:53,295 2022-05-25 20:35:53,295

有没有办法将其格式化为如上所述?

Attention! Missing ldap connection at  
2022-05-25 20:35:53,293
2022-05-25 20:35:53,294
2022-05-25 20:35:53,295
2022-05-25 20:35:53,295

在 cut 语句内部和外部添加“\n”是没有用的。

谢谢,

锡尔

答案1

将此过滤器添加到您的输出中grep -Eo "[0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*,[0-9]*"。那么它是如何工作的

  • grep -Eo好的,所以这E是 grep 的扩展正则表达式,并且o仅显示匹配行的非空部分
  • “[0-9]*” 打印从 0 到 9 的所有数字,直到出现非 0 到 9 的数字
  • 剩下的只是匹配字符

答案2

根据 Q 中的初始行:

echo -e "注意!\n $(cut -c-24 result) 处缺少 ldap 连接"

... 或许?

不是在任何现场情况下进行测试

相关内容