![删除一千八百万行 Unicode 24 Gig Windows XML 文件中的一千六百万行?](https://linux22.com/image/1406151/%E5%88%A0%E9%99%A4%E4%B8%80%E5%8D%83%E5%85%AB%E7%99%BE%E4%B8%87%E8%A1%8C%20Unicode%2024%20Gig%20Windows%20XML%20%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E4%B8%80%E5%8D%83%E5%85%AD%E7%99%BE%E4%B8%87%E8%A1%8C%EF%BC%9F.png)
关于如何从第 3 行开始删除 24 GIG 文件中的 1600 万行,您有什么想法吗?传统的 UNIX 命令行文本工具(针对 Windows 重新编译)无法处理文件的 Unicode 方面或文件大小。也许在流模式下,'cat' 在 4 GIG 左右会失败。
我查看了 EmEditor。它能够移动到特定行并为其添加书签,但似乎没有命令或宏来选择两个书签之间的所有行。按住 Shift 键向下翻页可能需要很长时间才能选择数百万行。
答案1
正如其他人所说(我暂时无法发表评论),使用 XML 工具来完成这项工作。Saxon-HE (http://www.saxonica.com)可能是您最好的选择——取决于 XML 文件的结构,您应该能够使用如下简短的 XPath 表达式:
//*[count(ancestor::*) lt 3]
在命令行上(使用 -qs:开关)仅输出您感兴趣的树的部分。
编辑:通过保持在 XML 世界内,您还可以确保 Unicode 得到正确处理,因此您不会冒丢失任何数据的风险。
答案2
如果您可以从文件开始和结束处找到所需的行数,则可以使用类似以下操作(将 999 替换为所需的数字):
head -n 999 infile.xml > outfile.xml
tail -n 999 infile.xml >> outfile.xml