Изменить формат текста - PullRequest
       2

Изменить формат текста

0 голосов
/ 17 октября 2018

В настоящее время у меня есть следующее:

GUID=1234
PatGUID=4567
...

Но мне нужен этот формат, потому что у меня большой набор данных:

GUID;PatGUID
1234;4567
...

У меня большое количество таких файловизменить формат.В настоящее время я пытаюсь изменить формат с помощью PowerShell, однако я открыт для любого метода достижения своей цели.

1 Ответ

0 голосов
/ 17 октября 2018

Преобразуйте содержимое файла в хеш-таблицу, создайте пользовательский объект из этой хеш-таблицы, затем экспортируйте в 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".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...