首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Linux命令从日志中提取数据

使用Linux命令从日志中提取数据
EN

Stack Overflow用户
提问于 2017-09-13 10:36:44
回答 1查看 24关注 0票数 2

嗨,我有带有这种格式日志的文件:

2017-09-13T11:08:27+02:00 {“日志”:“\u001B[0m\u001B[0m2017-09-13 11:07:58,443 x-8 INFO org.springframework.Something - asdasdadasdsler] -执行步骤: asdsdsdp\n"}

如何消除所有不必要的内容,并将\n更改为新行,使其看起来如下:

[0m2017-09-13 11:07:58,443 x#xte-8\x{e76f} org.springframework.Something - asdasdadasdsler] -执行步骤:asdsdsdp

使用linux命令?

EN

回答 1

Stack Overflow用户

发布于 2017-09-13 10:55:01

您可以在regex中使用sed来实现以下操作:

代码语言:javascript
复制
sed -i -E 's/[\[A-z0-9\]:\+"]+(\[0m[0-9]{4}[^\\]+)\\n/$1/g' filename

这样做的目的是:

  • sed -i -E 's/search/replace/g' filenamefilename文件中搜索search,它将匹配替换为replaceg代表全局。-i-E可以通过在终端中键入man sed来发现:-i替换了就地,意味着在同一个文件中;-E表示使用扩展正则表达式。
  • [\[A-z0-9\]:\+"]+匹配任何字符、任何数字、[]:+"。当遇到下一个regex部件时,它将停止。
  • ([^\\]+)对任何不是反斜杠的内容进行分组,但是我们必须使用(\[0m[0-9]{4}[^\\]+),因为以前的regex部分必须知道当它遇到"[0m2017"时必须停止。这个正则表达式将在\n之前停止。
  • $1是保存来自第一个组的匹配的变量(我们只有一个组,但是如果有更多的组,它们将按照发生的顺序存储在$1$2$3等中)。因此,整个输入字符串将被我们在第一组中捕获的内容所替换。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46195280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档