Sou novo no script do powershell, mas consegui reunir algumas linhas de código mostradas abaixo.
$input_path = 'C:\Users\ND04805\Documents_Projects_IP21_Graphics_update\graphic_xml.xml'
$output_file = 'C:\Users\ND04805\Documents_Projects_IP21_Graphics_update\tags.txt'
$regex1 = '\btag="[A-Za-z_0-9]+\b"'
select-string -Path $input_path -Pattern $regex1 -AllMatches | % { $_.Matches } | % { $_.Value } > $output_file
$regex2 = 'tag="[A-Za-z]_'
$(Get-content $output_file) -replace $regex2,'' | set-content $output_file
$(Get-content $output_file) -replace '_','(' | set-content $output_file
$(Get-content $output_file) -replace '"',')' | set-content $output_file
Arquivo de entrada
Arquivo de saída
dc(1730)
DC(2103)
dc(2416)
DC(2018)
DC(2017)
dc(2026)
dc(2070)
DC(2071)
dc(2100)
dc(2101)
dc(2440)
ac(2773)
ac(2763)
dc(2416)
ac(2829)
dc(2440)
ac(2859)
ac(2879)
ac(2880)
tag=)()
Objetivo do código
Eu tenho um arquivo XML (graphic_xml.xml) que representa um gráfico de processo no formato XML. Existe uma string tag="x_yy_nnnn
que é interessante e eu preciso extrair o mesmo deste arquivo XML.
onde
- x e y são alfabetos [a-zA-Z]
- nnnn é um número de 4 dígitos
Depois de extrair a tag que parece com tag="x_yy_nnnn"
, eu quero me livrar da parte tag="x_
e mudar o material restante para que a tag pareça com essa CG yy(nnnn)
.
Trabalhando
O regex1 selecionará a tag do arquivo XML e a transmitirá para o arquivo de saída usando o cmdlet select-string
.
Eu coloquei alguns textos de substituição feios que substituem o conteúdo do arquivo de saída em cada passagem
Pergunta
Eu gostaria de saber como isso pode ser feito de forma mais eficaz e correta. Por exemplo, não consigo adicionar o CG<space>
no início de cada linha do arquivo. Como isso pode ser feito?
Atualizar
Alterei a última linha de $(Get-content $output_file) -replace '"',')' | set-content $output_file
para $(Get-content $output_file) -replace '"',')' | Foreach-object {"CG $_"} | set-content $output_file
e recebi a string CG
anexada ao início de cada linha