Управление данными CSV в PowerShell 2 - PullRequest
0 голосов
/ 13 ноября 2018

Я схожу с ума, пытаясь понять мою проблему. Обычно в Powershell я делаю import-csv и получаю хороший вывод, который выглядит примерно так:

col1 : Mary.jane.doe
Col2 : John

Который затем я могу легко перемещать и делать все, что захочу. Но у меня есть файл, который дает мне:

col1                  col2
----                  ----
Mary.jane.doe         John

Мне нужно иметь возможность разделить первый столбец и поместить его в переменную, чтобы я просто получил "Мэри", а затем поместил это в свой собственный столбец, чтобы мой вывод выглядел следующим образом:

col1                  col2                  col3
----                  ----                  ----- 
Mary                  Mary.jane.doe         John

Заранее спасибо за ответы, а также что мне нужно было бы по-настоящему изучить в Powershell, чтобы понять, как это работает, поскольку я впервые вырвал свои волосы, манипулируя файлами csv, txt и т. Д. *
В Powershell? Большинство машин, на которых я работаю, имеют Powershell2.

1 Ответ

0 голосов
/ 13 ноября 2018

Ну, для начала вам нужно обновить ОС, так как PowerShell 2.0 используется по умолчанию только в тех версиях Windows, которые не поддерживаются, я уверен, что сейчас. Кроме того, это можно сделать довольно просто несколькими способами. Поскольку вы собираетесь изменять заголовки столбцов для каждого столбца (согласно вашему примеру), я бы передавал данные CSV через цикл ForEach-Object, создавал новый объект на основе каждого существующего объекта и выводил его.

$MyCSV = Import-Csv C:\Path\To\File.csv
$NewCSV = $MyCSV | ForEach-Object {
    New-Object PSCustomObject -Property @{
        'Col1' = $_.Col1.Split('.')[0]
        'Col2' = $_.Col1
        'Col3' = $_.Col2
        }
} | Select-Object col1, col2, col3

Примечание редактора: PSv2 не поддерживает определение свойств пользовательского объекта в порядке , поэтому для обеспечения требуемого порядка перечисления свойств необходим вызов Select-Object. В PSv3 + вы можете создавать собственные объекты как [pscustomobject] @{ ... }, что соответствует порядку определения свойств.

Это повторяет CSV, и для каждой записи создает новую запись с желаемыми свойствами. Как я уже сказал, есть несколько способов сделать это, но я думаю, что это будет самым простым, учитывая ваши потребности.

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