【发布时间】:2013-03-19 15:42:32
【问题描述】:
我有一个非常大的 xml 文件 (1.25 GB),我需要将其拆分为更小的文件才能处理它们。该文件包含以标签开头和结尾的语言数据:
你好
一个例子
本质上将是三个不同的文件:开始和结束由“文本”标签标记。 例如:
文件 1
这是
文件 3
标签: xml unix tags split command
我有一个非常大的 xml 文件 (1.25 GB),我需要将其拆分为更小的文件才能处理它们。该文件包含以标签开头和结尾的语言数据:
你好
一个例子
本质上将是三个不同的文件:开始和结束由“文本”标签标记。 例如:
文件 1
这是
文件 3
标签: xml unix tags split command
在此处找到以下 PERL 程序:Split one file into multiple files based on delimiter
#!/usr/bin/perl
open(FI,"file.txt") or die;
$cur=0;
open(FO,">res.$cur.txt") or die;
while(<FI>)
{
print FO $_;
if(/^<\/text>/) # Added \
{
close(FO);
$cur++;
open(FO,">res.$cur.txt") or die;
}
}
close(FO);
似乎也可以解决问题,没有上限。
干杯。
【讨论】:
以下 awk 解决了这个问题,但不幸的是,输出文件限制在 1000 个左右
awk '{print $0 ""> "file" NR}' RS='' input-file
【讨论】:
它比简单的 awk 命令复杂得多,而且我不知道文件是否很大,但是您可以尝试使用带有 result-document 的 XSLT V2.0 样式表来生成您的所有文件。
与正则表达式相比,使用 XSLT 的一个优点是,如果文件格式稍有变化,或者如果您要拆分的节点上有属性,它将有更好的支持。
【讨论】: