【发布时间】:2016-08-04 23:36:09
【问题描述】:
您好,我正在尝试分割一个包含项目标签的 xml 文件。由于我在一个文件中有 250 个项目,我想将整个文件分成 5 个较小的文件,每个文件包含 50 个项目(及其内容)。
我从这个链接Linux script: how to split a text into different files with match pattern得到了什么
awk '{if ($0 ~ /<item>/) a++} { print > ("NewDirectory"a".xml") }'
但是,这会将整个文件分成每 1 个项目 1 个文件。所以我需要帮助修改此语句以将文件拆分为每 50 个项目 1 个文件。
【问题讨论】:
-
如果您尝试重新创建格式正确的
xml文件,您将需要更多的代码。而且因为xml和正则表达式永远不能毫无问题地“一起玩”,(即使你可以解决这个特殊问题)你正在为日后让你的经理失望的时候打下基础,当你背负沉重的时候XML 问题非常复杂,必须使用 xml 感知工具来解决。正如@sjsam 所指出的,您的 Q 需要少量样本输入、预期输出、您当前的代码和错误消息。 -
为什么是“小样本输入”?如果你用 4 行文件来解决你的问题,创建 2 x 2 行文件,你可以解决你真正的问题,对吧?祝你好运。
-
@shellter 我知道,只是采取“小”步骤。不为任何人这样做,只是想学习 awk。
-
好吧,如果你只是想学习
awk,你最好再找一个学习项目。通过 awk 掌握 xml 的道路是不可逾越的。大多数(所有)unix 实用程序旨在一次处理一行数据。xml有一组非常不同的组织原则,即<tag attribx=yz> <tag2> </tag2></tag>,一百万个嵌套元素在一行,或者每个“元素”可以单独一行或由 2-100-n 个空行分隔,是完全合法的.