Использование командной строки Ubuntu для замены текста в огромном файле

У меня есть огромный XML-файл, с которым я должен работать. На данный момент файл состоит всего из 1 строки, содержащей около 2 миллионов символов, которые представляют 30 000 записей. Там нет возврата каретки или перевода строки вообще. Что мне нужно сделать, так это сделать каждую запись отдельной строкой. Новые записи начинаются с <ROW> и заканчиваются </ROW>.

Я искал здесь, и кажется, что инструменты, которые нужно использовать: sed, tr или awk, но я не уверен, что является наиболее подходящим.

Я пробовал это безрезультатно:

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

Выше, кажется, выводит довольно странные вещи, поэтому я должен быть далеко отсюда. может проблема в том, что "<" символ?

0
задан 23 August 2014 в 11:41

2 ответа

Я не думаю tr, может заменить последовательности из символов (просто отдельные символы за один раз, хотя возможно от устанавливает ) - я попробовал бы что-то как

sed 's|</ROW>|&\n|g' source.xml > destination.xml
0
ответ дан 23 August 2014 в 11:41

Если бы возможный (например, это - действительный xml документ), я высоко советовал бы инструменту, это предназначается для этого задания. например, xmllint (от пакета libxml2-utils).

xmllint --format filename.xml
0
ответ дан 23 August 2014 в 11:41

Другие вопросы по тегам:

Похожие вопросы: