Shell脚本硬编码一个单词并读取日志文件

时间:2018-03-28 18:42:33

标签: shell

我最近开始学习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.

关于代码段的任何建议

1 个答案:

答案 0 :(得分:0)

问题是echo不从stdin读取,因此它永远不会看到日志文件中的行。您可以用xargs -L 1 echo EDHDEV:Error:替换echo命令。 -L 1确保在后续命令中只将一个输入行作为尾随参数放置。