Faganga 0 Posted May 9, 2019 Report Share Posted May 9, 2019 Boa tarde. Tenho um ficheiro de texto com 10 milhões de linhas, em que algumas (cerca de 500) têm que ser alteradas. Ao fazer uma pesquisa por uma determinada palavra mostra-me as linhas a serem alteradas. Nessas linhas tenho que alterar 2 palavras em campos distintos, mas quero alterar apenas nas linhas do resultado da pesquisa. exemplo: Line 266607: <DebitAmount>-0.140000</DebitAmount> Line 1806697: <DebitAmount>-22.140000</DebitAmount> Line 1844762: <DebitAmount>-3.410000</DebitAmount> Line 1864033: <DebitAmount>-104.550000</DebitAmount> Os valores a débito a negativo têm que passar para crédito a positivo. Pesquisei por "<DebitAmount>-" e a pesquisa devolveu-me as linhas que têm o valor a negativo. Consigo substituir o que está à esquerda do valor por "<CreditAmount>", mas preciso de substituir também o que está à direita do valor. Só que existe a mesma palavra (</DebitAmount>) em outras linhas que não são para alterar. Quero substitiur apenas nas linhas que a pesquisa devolveu. Se alguém puder ajudar, desde já agradeço. Link to post Share on other sites
InvertedCloud 0 Posted May 9, 2019 Report Share Posted May 9, 2019 (edited) Boa noite, recomendo uma vista de olhos ao tópico de expressões regulares, recomendo a captura de padrões, segue um tutorial do próprio editor: http://docs.notepad-plus-plus.org/index.php/Regular_Expressions estou um pouco apertado com tempo mas se preciso, dou uma sugestão de uma expressão daqui a umas horas, preciso apenas de despachar alguns trabalhos. Se outra pessoa não resolver entretanto, boa sorte. Por favor avise se de facto não conseguir e assim que puder, venho dar uma ajuda. Edit: sugestão, ao fazer a captura, tem de contar com o facto de ter uma tag a abrir e uma tag ao fechar, e que procura valores negativos pelo meio. A substituição, posso estar enganado, mas creio que segue a mesma ideia. Edited May 9, 2019 by InvertedCloud Link to post Share on other sites
pluto 0 Posted May 9, 2019 Report Share Posted May 9, 2019 (edited) Viva como disse o InvertedCloud pode ser feito por RegExp ou Macro Para reg exp seria algo do género Procurar (<DebitAmount>-)([0-9/.]+)(</DebitAmount>) Replace <CreditAmount>\2</CreditAmount> Abc Edited May 9, 2019 by pluto Link to post Share on other sites
Faganga 0 Posted May 13, 2019 Author Report Share Posted May 13, 2019 Muito obrigado pela vossa ajuda. Resolveu o problema. Link to post Share on other sites
Faganga 0 Posted June 24, 2019 Author Report Share Posted June 24, 2019 Boa tarde. Peço mais uma vez a vossa ajuda. Há alguma forma de eliminar todas as transações com data posterior a 31/05/2017? Sendo que a data não consta em todas as linhas da transação. Exemplo de uma a eliminar: <Transaction> <TransactionID>2017-06-23 1 00010006002164000001</TransactionID> <Period>6</Period> <TransactionDate>2017-06-23</TransactionDate> <SourceID>ADM</SourceID> <Description>Importação</Description> <DocArchivalNumber>00010006002164000001</DocArchivalNumber> <TransactionType>N</TransactionType> <GLPostingDate>2017-06-29T13:05:22</GLPostingDate> <Line> <RecordID>000000000000000000000000000023</RecordID> <AccountID>211115108</AccountID> <SystemEntryDate>2017-06-29T13:05:22</SystemEntryDate> <Description>Factura</Description> <DebitAmount>70.000000</DebitAmount> </Line> <Line> <RecordID>000000000000000000000000000024</RecordID> <AccountID>72112</AccountID> <SystemEntryDate>2017-06-29T13:05:22</SystemEntryDate> <Description>Factura</Description> <CreditAmount>70.000000</CreditAmount> </Line> </Transaction> Desde já obrigado. Link to post Share on other sites
Faganga 0 Posted June 25, 2019 Author Report Share Posted June 25, 2019 Em 09/05/2019 às 21:12, pluto disse: Viva como disse o InvertedCloud pode ser feito por RegExp ou Macro Para reg exp seria algo do género Procurar (<DebitAmount>-)([0-9/.]+)(</DebitAmount>) Replace <CreditAmount>\2</CreditAmount> Abc Boa tarde. Peço mais uma vez a vossa ajuda. Há alguma forma de eliminar todas as transações com data posterior a 31/05/2017? Sendo que a data não consta em todas as linhas da transação. Exemplo de uma a eliminar: <Transaction> <TransactionID>2017-06-23 1 00010006002164000001</TransactionID> <Period>6</Period> <TransactionDate>2017-06-23</TransactionDate> <SourceID>ADM</SourceID> <Description>Importação</Description> <DocArchivalNumber>00010006002164000001</DocArchivalNumber> <TransactionType>N</TransactionType> <GLPostingDate>2017-06-29T13:05:22</GLPostingDate> <Line> <RecordID>000000000000000000000000000023</RecordID> <AccountID>211115108</AccountID> <SystemEntryDate>2017-06-29T13:05:22</SystemEntryDate> <Description>Factura</Description> <DebitAmount>70.000000</DebitAmount> </Line> <Line> <RecordID>000000000000000000000000000024</RecordID> <AccountID>72112</AccountID> <SystemEntryDate>2017-06-29T13:05:22</SystemEntryDate> <Description>Factura</Description> <CreditAmount>70.000000</CreditAmount> </Line> </Transaction> Desde já obrigado. Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now