我正在寻找一个单行正则表达式来匹配日志文件中的“Error”一词,并且我需要获取包含“Error”一词的行上方和下方的几行以进行调试。
例如: 我需要匹配单词“TypeError”,并在该匹配行的上方和下方获取其他几行。至少我需要接下来的 10 行。有人可以帮忙吗?
下面的日志文件内容=>
**TypeError**: Parameter 'url' must be a string, not undefined
at Url.parse (url.js:107:11)
at urlParse (url.js:101:5)
at Object.urlResolve [as resolve] (url.js:404:10)
at parseMarkdown (/opt/controllers/api/userguide.js:53:19)
at /opt/controllers/api/userguide.js:33:17
at Object.<anonymous> (/opt/models/api.js:172:4)
at /opt/lib/data/api.js:138:5
at IncomingMessage.<anonymous> (/opt/node_modules/httpunch/lib/_wrap_request.js:100:9)
at IncomingMessage.g (events.js:180:16)
at IncomingMessage.emit (events.js:117:20)
最佳答案
试试这个(获取最多 10 条前后行)-
(?:(?:.*\n){0,10}).*?Error.*(?:(?:\n.*){0,10})
编辑
刚刚阅读有关unix环境的评论。
您可以使用Grep使用与上面相同的正则表达式的命令。
像这样 -
$ grep -Pzo "(?:(?:.*\n){0,10}).*?Error.*(?:(?:\n.*){0,10})" <filename>
关于javascript - 用于匹配错误和相关几行的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28951538/