Perl在每个} {match之间插入新行

Chr*_*rds 2 perl json

我有一个文本文件,其中包含大量的JSON对象,并且尚未使用新行或对象之间的任何分隔符创建它.

目前我正在使用:

perl -e '$/ = "}{"; print "$_\n" while <>' file.txt > out.txt
Run Code Online (Sandbox Code Playgroud)

但这会导致格式错误的数据,因为当文件在新行上拆分时,JSON对象将丢失开头,{因为新行将放置在{字符后面.

有没有办法在}{匹配之间插入新的行替换}\n{.

该文件非常大,所以我不能手动执行.

不必在Perl中,可以在更适合任务的东西中.

sim*_*que 7

不要只是print.在}和之间替换换行符{.现在while需要一个块,因为上一次s///失败,所以这样做s/// && print while <>不起作用.

$ cat json.json
{"foo":"bar"}{"bar":"baz"}{"bo":"shizzle"}
$ perl -e '$/ = "}{"; while (<>) { s/\}\{$/}\n{/; print; }' json.json 
{"foo":"bar"}
{"bar":"baz"}
{"bo":"shizzle"}
Run Code Online (Sandbox Code Playgroud)