我最近开始学习shell脚本,我正在尝试创建一个shell脚本,它将从日志文件中读取最近的语句,并添加一个预定义的单词" EDHDEV:ERROR"在结果文件中以及错误说明。我已经尝试过了。我的代码片段是。
tail -f|egrep -wi 'exception|critical' /var/log/cloudera-scm-server/cloudera- scm-server.log|echo "EDHDEV:ERROR" >>subash.txt
以下是日志中的错误行
2018-03-29 05:30:57,334 ERROR WebServerImpl:com.cloudera.server.web.cmf.TsqueryAutoCompleter: Error getting predicates
因此文本文件将以下面的格式附加
<timestamp> EDHDEV:Error:<Error description>
应如下所示
2018-03-29 05:30:57 edhdev:ERROR:WebServerImpl:com.cloudera.server.web.cmf.TsqueryAutoCompleter: Error getting predicates.
关于代码段的任何建议
答案 0 :(得分:0)
问题是echo
不从stdin读取,因此它永远不会看到日志文件中的行。您可以用xargs -L 1 echo EDHDEV:Error:
替换echo命令。 -L 1
确保在后续命令中只将一个输入行作为尾随参数放置。