На данный момент у меня есть следующее:
GUID=1234 PatGUID=4567 ...
Но мне нужен этот формат, потому что у меня большой набор данных:
GUID;PatGUID 1234;4567 ...
У меня есть большое количество таких файлов, которые нужно изменить. В настоящее время я пытаюсь изменить формат с помощью PowerShell, однако я открыт для любого метода для достижения своей цели.





Преобразуйте содержимое файла в хеш-таблицу, создайте пользовательский объект из этой хеш-таблицы, а затем экспортируйте в CSV с пользовательским разделителем.
$ht = Get-Content 'input.txt' |
Out-String |
ConvertFrom-StringData
New-Object -Type PSObject -Property $ht |
Export-Csv 'output.csv' -Delimiter ';' -NoType
В PowerShell v3 и новее вы можете упростить код, заменив Get-Content | Out-String на Get-Content -Raw и используя ускоритель типа [PSCustomObject] вместо New-Object.
$ht = Get-Content 'input.txt' -Raw | ConvertFrom-StringData
[PSCustomObject]$ht |
Export-Csv 'output.csv' -Delimiter ';' -NoType
Если ваши входные данные содержат одни и те же ключи несколько раз, вам нужно разбить данные на фрагменты и преобразовать каждый из них в объект индивидуально:
$list = (Get-Content 'input.txt' | Out-String) -split '\r?\n(?=GUID)' |
ForEach-Object {
$ht = $_ | ConvertFrom-StringData
New-Object -Type PSObject -Property $ht
}
$list | Export-Csv 'output.csv' -Delimiter ';' -NoType
\r?\n(?=GUID) - это регулярное выражение, которое использует утверждение положительного просмотра вперед ((?=...)) для разделения строки на новые строки, за которыми следует строка «GUID».