存在很多解决方案,但这里的特殊性是我需要能够在一条线内分割,切割应该在模式之前发生.例如:
INFILE:
<?xml 1><blabla1>
<blabla><blabla2><blabla>
<blabla><blabla>
<blabla><blabla3><blabla><blabla>
<blabla><blabla><blabla><?xml 4>
<blabla>
<blabla><blabla><blabla>
<blabla><?xml 2><blabla><blabla>
Run Code Online (Sandbox Code Playgroud)
应该成为模式 <?xml
Outfile1:
<?xml 1><blabla1>
<blabla><blabla2><blabla>
<blabla><blabla>
<blabla><blabla3><blabla><blabla>
<blabla><blabla><blabla>
Run Code Online (Sandbox Code Playgroud)
Outfile2:
<?xml 4>
<blabla>
<blabla><blabla><blabla>
<blabla>
Run Code Online (Sandbox Code Playgroud)
Outfile3:
<?xml 2><blabla><blabla>
Run Code Online (Sandbox Code Playgroud)
实际上,perl
在验证答案脚本在这里工作正常,我的小例子.但它会为我更大(约6GB)的实际文件生成错误.错误是:
panic: sv_setpvn called with negative strlen at /home/.../split.pl line 7, <> chunk 1.
Run Code Online (Sandbox Code Playgroud)
我没有评论的权限,这就是我开始新帖子的原因.最后,Python
我更了解解决方案,因为我更了解它.
试图找出最好的方法(使用我在Grep/Sed/Awk中所知的方法)根据它的单个字符串(键?)分割XML文件.我有一个XML文件,它是我所有当前FAQ条目的SQL转储,因此它包含一个条目ID,然后是一个相当大的HTML格式文档.我希望将这些条目分开,以便我可以轻松地将它们弹出到编辑器中并清理格式以导入到新的KB/FAQ系统.这是我的数据示例:
<article id="3">
<language>en</language>
<category>Category Name</category>
<keywords>Keywords, by, comma</keywords>
<question>Question?</question>
<answer>HTML Formatting</answer>
<author>Author</author>
<data>2010-05-13 09:32</data>
</article>
Run Code Online (Sandbox Code Playgroud)
XML文件包含我以这种格式重新连接的每篇KB文章.我很乐意用bash来解决它,我只是不知道如何根据搜索将它分成多个文件.
干杯,
粘土
我有一个巨大的文件,45 GB。我想把它分成4部分。我可以通过以下方式做到这一点split --bytes=12G inputfile
:
问题是它扰乱了文件的模式。此拆分根据大小剪切文件,因此不会保留格式。我的输入文件如下所示:
Inspecting sequence ID chr1:11873-13873
V$ARID3A_04 | 1981 (-) | 0.899 | 0.774 | tttctatAATAActaaa
V$ARID3A_04 | 1982 (+) | 0.899 | 0.767 | ttctaTAATAactaaag
Inspecting sequence ID chr1:11873-13873
V$ARID3A_04 | 1981 (-) | 0.899 | 0.774 | tttctatAATAActaaa
V$ARID3A_04 | 1982 (+) | 0.899 | 0.767 | ttctaTAATAactaaag
Run Code Online (Sandbox Code Playgroud)
我想分割文件,但也要提到分割它的模式,Inspecting
以便我返回的分割文件必须如下所示:
Inspecting sequence ID chr1:11873-13873
V$ARID3A_04 | 1981 (-) | 0.899 | 0.774 | tttctatAATAActaaa
V$ARID3A_04 | 1982 (+) | 0.899 | 0.767 …
Run Code Online (Sandbox Code Playgroud)