shell - sh,读取大量日志文件并 grep 一些文本并打印所有出现的文件名和行号
问题描述
我觉得应该在某个地方回答这个问题,但我找不到一个好的答案。
我的要求是我需要在 Unix 服务器上搜索过去 3 个月的日志(几千个文件)以查找所有异常。
所以我需要一个命令(或脚本),它应该打印、记录文件名、行号、异常第一行,然后将该输出 > 路由到一个新文件。
我想要一些可以在后台运行并在该过程完成后检查的东西。
然后,我可以分析该文件中的所有常见异常,并可以专注于最常发生的异常。
谢谢您的帮助。
解决方案
我想这可能对你有帮助
要删除旧文件,您可以直接使用 find 如下所示,
find <PATH> -type f -mtime -90 -exec rm {} \;
请在运行命令之前确认文件夹,因为它也有rm
现在诀窍是 find 的 mtime 选项,
mtime 是修改时间,上面的命令会返回最近 90 天内修改的所有文件,(如果你给 +90 它将返回所有修改超过 90 天的文件)。
如果您想 grep 使用 find 并将其通过管道传递给 grep,如下所示,
find <PATH> -type f -mtime -90 | xargs grep -in <PATTERN> > output.log
推荐阅读
- sql-server - T-SQL 从数字中获取一周的第一天
- c++ - 使用鼠标事件计算相机的位置和旋转
- excel - 尝试使用 FileSystemObject 打开 csv 时出错:代码运行但什么也不做
- html - X 和 Y 轴上的 HTML 表格滚动功能
- java - 如何在 AKKA 的有限状态机中正确传递数据
- mysql - MySQL:SQL JOIN、COUNT 和 WHERE 语句
- python - 熊猫按标签查找内容不起作用
- playframework - Play 最多只能支持 100 个打开的连接
- css - Qt:根据状态更改字体:启用:禁用 CSS
- google-sheets - 创建复杂的条件格式规则