У меня есть огромный XML-файл, с которым я должен работать. На данный момент файл состоит всего из 1 строки, содержащей около 2 миллионов символов, которые представляют 30 000 записей. Там нет возврата каретки или перевода строки вообще. Что мне нужно сделать, так это сделать каждую запись отдельной строкой. Новые записи начинаются с <ROW>
и заканчиваются </ROW>
.
Я искал здесь, и кажется, что инструменты, которые нужно использовать: sed, tr или awk, но я не уверен, что является наиболее подходящим.
Я пробовал это безрезультатно:
tr '<ROW' '\012 <ROW' <source.xml |tee destination.xml
Выше, кажется, выводит довольно странные вещи, поэтому я должен быть далеко отсюда. может проблема в том, что "<" символ?
Я не думаю tr
, может заменить последовательности из символов (просто отдельные символы за один раз, хотя возможно от устанавливает ) - я попробовал бы что-то как
sed 's|</ROW>|&\n|g' source.xml > destination.xml
Если бы возможный (например, это - действительный xml документ), я высоко советовал бы инструменту, это предназначается для этого задания. например, xmllint (от пакета libxml2-utils).
xmllint --format filename.xml