
Tenha em mente que sou novo em xml e npp.
Tenho um arquivo xml grande com vários milhares de registros e preciso alterar as linhas para que funcione em outro programa.
Fiz a maior parte da transformação no formato, mas agora encontrei um problema.
Como está meu xml agora:
</Value>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</Value>
</DPR>
e o que eu quero:
<DPR>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</description>
</DPR>
O problema é substituir </Value>
por duas coisas diferentes, dependendo se estiver em uma série de suportes independentes. O segundo problema que tenho é substituir partes de uma linha e manter o resto - quando a parte que desejo manter tem um número diferente de caracteres para cada linha.
Toda ajuda é muito apreciada!
Responder1
Substituindo </Value
por </DPR>
quando existir sozinho na linha:
Encontre o que:^ *</Value>
Substituir com:</DPR>
Modo de pesquisa: expressão regular
Depois disso, não deve haver outras instâncias além </Value>
daquelas que estão juntas com uma string, portanto, substituí-las deve ser trivial. Mas para completar...
Substituindo [somestringhere]</Value
-> [somestringhere]</description>
quando existe sozinho na linha:
Encontre o que:^(<description>.+?)</Value>
Substituir com:$1</description>
Modo de pesquisa: expressão regular
Acima ^
representa o início da linha, *
significa que o espaço em branco pode ou não existir, .+?
significa quaisquer caracteres até a primeira ocorrência da string depois disso (veja aqui para mais informações sobre expressões regulares), e $1
na string de substituição será substituída pela parte correspondente entre parênteses nos dados de origem.
Responder2
O mais fácil é usar expressões regulares em Perl:
perl -i -p -e 's/</Value>\n<name>/<DPR>\n<name>/' yourfile.txt