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

问题描述 投票:0回答:1

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

关于代码段的任何建议

shell
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.