Имейте в виду, что я новичок в XML и NPP ..

У меня большой XML-файл с несколькими тысячами записей, и мне нужно изменить строки, чтобы он работал в другой программе.

Я сделал большую часть преобразования в формате, но столкнулся с проблемой сейчас.

Как выглядит мой xml сейчас:

</Value>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</Value>
</DPR>

и что я хочу:

<DPR>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</description>
</DPR>

Проблема заключается в замене </Value> на две разные вещи в зависимости от того, находится ли он в отдельной строке. Вторая проблема, которую я имею, - это замена частей строки и сохранение остальных - когда часть, которую я хочу сохранить, имеет разное количество символов для каждой строки.

Вся помощь очень ценится!

2 ответа2

0

Самый простой - использовать регулярные выражения в Perl:

perl -i -p -e 's/</Value>\n<name>/<DPR>\n<name>/' yourfile.txt
0

Замените </Value на </DPR> если он существует один в строке:

Найти что: ^ *</Value>

Заменить на: </DPR>

Режим поиска: регулярное выражение

После этого не должно быть никаких других экземпляров </Value> кроме тех, которые вместе со строкой, поэтому их замена должна быть тривиальной. Но для полноты ...

Замена [somestringhere]</Value -> [somestringhere]</description> когда он существует один в строке:

Найдите что: ^(<description>.+?)</Value>

Заменить на: $1</description>

Режим поиска: регулярное выражение

В приведенном выше ^ обозначает начало строки, * означает пробел может или не может .+? означает любые символы вплоть до первого вхождения строки после этого (смотрите здесь для получения дополнительной информации о регулярных выражениях), и $1 в строке замены будет заменен соответствующей частью, заключенной в круглые скобки в исходных данных.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .