使用 Ubuntu 命令行替换大文件中的文本

使用 Ubuntu 命令行替换大文件中的文本

我有一个巨大的 XML 文件需要处理。目前,该文件只有 1 行,包含约 200 万个字符,代表 30,000 条记录。没有任何回车符或换行符。我需要做的是将每条记录放在自己的行上。新记录以 开头<ROW>,以 结尾</ROW>

我一直在这里寻找,似乎要使用的工具是:sed,tr 或 awk,但我不确定哪个最合适。

我试过这个,但没有成功:

tr '<ROW' '\012 <ROW' <source.xml |tee destination.xml

上面似乎输出了一些非常奇怪的东西,所以我一定是错了。也许是那个“<”字符有问题?

答案1

我不认为tr可以取代序列字符(每次只输入一个字符,尽管可能来自)——我会尝试类似

sed 's|</ROW>|&\n|g' source.xml > destination.xml

答案2

如果可能的话(例如,它是一个有效的 xml 文档),我强烈建议使用专门用于这项工作的工具。例如,xmllint(来自包 libxml2-utils)。

xmllint --format filename.xml

相关内容