gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 12:24:25 24 4
gpt4 key购买 nike

您好,我有这种格式的日志文件:

2017-09-13T11:08:27+02:00 {"log":"\u001B[0m\u001B[0m2017-09-13 11:07:58,443 |xte-8| INFO [org.springframework.Something] - asdasdadasdsler] - Executing step: [asdsdsdp]\n"}

如何摆脱所有不必要的东西并将\n 更改为新行,使其看起来像这样:

[0m2017-09-13 11:07:58,443 |xte-8| INFO [org.springframework.Something] - asdasdadasdsler] - Executing step: [asdsdsdp]

(new empty line from \n)

使用 linux 命令?

最佳答案

您可以使用带有正则表达式的 sed 来完成:

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

它的作用是:

  • sed -i -E 's/search/replace/g' filename 在文件 filename 中搜索 search,它替换匹配项用replaceg代表全局。 -i-E 的作用可以通过在终端中输入 man sed 来查看:-i 替换到位,是指在同一个文件中; -E 代表使用扩展正则表达式。
  • [\[A-z0-9\]:\+"]+ 匹配任意字符,任意数字,[, ] , :, +".它会在遇到下一个正则表达式部分时停止。
  • ([^\\]+) 将任何不是反斜杠的东西分组,但我们必须使用 (\[0m[0-9]{4}[^\\]+) 因为前面的regex部分肯定知道遇到"[0m2017"就得停下来。此正则表达式将在 \n 之前停止。
  • $1 是保存第一组匹配项的变量(我们只有一个组,但如果有更多,它们将存储在 $1$2 $3 等,按它们出现的顺序排列)。所以整个输入字符串将被我们在第一组中捕获的内容替换。

关于linux - 使用 Linux 命令从日志中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46195280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com