嗨,我有带有这种格式日志的文件:
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命令?
发布于 2017-09-13 10:55:01
您可以在regex中使用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,它将匹配替换为replace,g代表全局。-i和-E可以通过在终端中键入man sed来发现:-i替换了就地,意味着在同一个文件中;-E表示使用扩展正则表达式。[\[A-z0-9\]:\+"]+匹配任何字符、任何数字、[、]、:、+和"。当遇到下一个regex部件时,它将停止。([^\\]+)对任何不是反斜杠的内容进行分组,但是我们必须使用(\[0m[0-9]{4}[^\\]+),因为以前的regex部分必须知道当它遇到"[0m2017"时必须停止。这个正则表达式将在\n之前停止。$1是保存来自第一个组的匹配的变量(我们只有一个组,但是如果有更多的组,它们将按照发生的顺序存储在$1、$2、$3等中)。因此,整个输入字符串将被我们在第一组中捕获的内容所替换。https://stackoverflow.com/questions/46195280
复制相似问题