Я новичок в сценариях powershell, но мне удалось собрать несколько строк кода, показанных ниже.
$input_path = 'C:\Users\ND04805\Documents\1_Projects\10_IP21_Graphics_update\graphic_xml.xml'
$output_file = 'C:\Users\ND04805\Documents\1_Projects\10_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
Входной файл
Выходной файл
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=)()
Кодекс Цель
У меня есть файл XML (graphic_xml.xml), который отображает графику процесса в формате XML. Существует строка tag="x_yy_nnnn
которая представляет интерес, и мне нужно извлечь ее из этого XML-файла.
где
- x и y - алфавиты [a-zA-Z]
- nnnn - это четырехзначное число
После извлечения тега, который выглядит как tag="x_yy_nnnn"
, я хочу избавиться от tag="x_
part и изменить оставшийся материал так, чтобы тег выглядел как CG yy(nnnn)
.
За работой
Regex1 выберет тег из файла XML и передаст его в выходной файл с помощью командлета select-string
.
Я вставил несколько уродливых текстов замены, которые заменяют содержимое выходного файла при каждом проходе.
Вопрос
Я хотел бы знать, как это можно сделать более эффективно и правильно. Например, я не могу добавить CG<space>
в начале каждой строки файла. Как это может быть сделано?
Обновить
Я изменил последнюю строку с
$(Get-content $output_file) -replace '"',')' | set-content $output_file
в
$(Get-content $output_file) -replace '"',')' | Foreach-object {"CG $_"} | set-content $output_file
и получил строку CG
добавленную в начало каждой строки