Python sed不处理大文件[寻找其他选项]

Python sed不处理大文件[寻找其他选项],python,json,bash,sed,gnu,Python,Json,Bash,Sed,Gnu,我有一个巨大的json文件,它是意外输出的,在所有json条目之间没有换行符。它被视为一条巨大的单行线。所以我所做的就是试着用sed替换并插入一个新行 sed 's/{"seq_id"/\n{"seq_id"/g' my_giant_json.json 它不输出任何东西 但是,如果只对文件的一小部分进行操作,我知道sed表达式可以正常工作 head -c 1000000 my_giant_json.json | sed 's/{"seq_id"/\n{"seq_id"/g' 我还尝试将p

我有一个巨大的json文件,它是意外输出的,在所有json条目之间没有换行符。它被视为一条巨大的单行线。所以我所做的就是试着用sed替换并插入一个新行

sed 's/{"seq_id"/\n{"seq_id"/g' my_giant_json.json
它不输出任何东西

但是,如果只对文件的一小部分进行操作,我知道sed表达式可以正常工作

head -c 1000000 my_giant_json.json |  sed 's/{"seq_id"/\n{"seq_id"/g'

我还尝试将python与这个粗糙的单行程序结合使用


“\n{”seq_id'.join(打开(json_文件,'r').readlines()[0].split(“{”seq_id')).lstrip()

但这要感谢readlines()方法才能加载到内存中,但我不知道如何迭代一行巨大的字符(以块的形式迭代)并进行查找和替换


有什么想法吗?

Perl将允许您将输入分隔符(
$/
)从换行符更改为另一个字符。您可以利用这一点获得一些方便的分块

perl -pe'BEGIN{$/="}"}s/^({"seq_id")/\n$1/' my_giant_json.json
它将输入分隔符设置为
“}”
,然后查找以
{“seq_id”
开头的块,并在它们前面加一个换行符


请注意,它在开始处放置了一个不必要的空行。您可以使程序复杂化以消除该空行,或者在之后手动将其删除。

一次读取N个字符。检查此答案是否有想法@snakecharmb-不重复。如果对象之间的行数是常量,则该答案有效。但不幸的是,它不是。@CrobarKZ Tha如果我将文件作为块进行更正,它可能会起作用。我会回来的。有人知道sed为什么不起作用吗?