您好我有这种格式的日志文件:
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] - 执行步骤:[asdsdsdp] \ n"}
如何摆脱不必要的一切,并将\ n更改为新行,以便它看起来像这样:
[0m2017-09-13 11:07:58,443 | xte-8 |信息 [org.springframework.Something] - asdasdadasdsler] - 执行步骤: [asdsdsdp]
(来自\ n的新空行)
使用linux命令?
答案 0 :(得分:1)
您可以使用sed
与正则表达式来完成:
sed -i -E 's/[\[A-z0-9\]:\+"]+(\[0m[0-9]{4}[^\\]+)\\n/$1/g' filename
这是做什么的:
sed -i -E 's/search/replace/g' filename
在文件search
中搜索filename
,它将匹配替换为replace
,g
代表全局。通过在您的终端中键入-i
可以找到-E
和man sed
所做的事情:-i
替换到位,意味着在同一个文件中; -E
代表使用扩展正则表达式。[\[A-z0-9\]:\+"]+
匹配任何字符,任意数字,[
,]
,:
,+
和"
。遇到下一个正则表达式部分时它将停止。([^\\]+)
对任何不反斜杠的内容进行分组,但我们必须使用(\[0m[0-9]{4}[^\\]+)
,因为之前的正则表达式部分必须知道它必须在遇到"[0m2017"
时停止。此正则表达式将在\n
之前停止。$1
是保存第一组匹配的变量(我们只有一个组,但如果有更多,则会存储在$1
,$2
,{{1}按它们发生的顺序等)。因此整个输入字符串将被我们在第一组中捕获的内容所取代。