Как переместить значение любого столбца, начиная со второго, на новую строку?

Я использую PowerShell для этой задачи и хотел бы переместить значение любого столбца, начиная со второго, в свою собственную строку. У меня есть файл CSV с чем-то вроде этого:

red,blue,yellow
red
red,blue

Я хочу добиться следующего

red
blue
yellow
red
red
blue

Я не знаю, сколько возможных столбцов у меня будет в любом заданном CSV-файле, но конечным результатом являются все значения в каждом столбце на отдельной строке.

Я думал об использовании командлета Import-Csv с Select-Object, но не мог понять.


person Awsmike    schedule 05.04.2018    source источник
comment
Что ж, пример, который вы опубликовали, не является допустимым файлом CSV, поэтому Import-CSV, вероятно, не является хорошим вариантом.   -  person EBGreen    schedule 05.04.2018
comment
Все ли строки разделены запятыми?   -  person EBGreen    schedule 05.04.2018
comment
Хорошая точка зрения! Одна строка не разделена запятой, но я могу добавить запятую в конце каждой строки, если это упрощает...   -  person Awsmike    schedule 05.04.2018
comment
Не могли бы вы показать реальный пример структуры реального файла?   -  person EBGreen    schedule 05.04.2018
comment
то же, что и выше, но замените цвета именами... я только что взял первые 3 строки файла; ни одна из строк не заканчивается запятыми   -  person Awsmike    schedule 05.04.2018
comment
Таким образом, элементы в каждой строке разделены запятыми. Тогда ответ, который я дал, должен работать как есть.   -  person EBGreen    schedule 05.04.2018
comment
Хорошо, круто, я думал, вам нужна запятая, чтобы они были разделены запятыми, даже для тех, у которых есть только один цвет ... хотя это сработало, так что еще раз спасибо!   -  person Awsmike    schedule 05.04.2018


Ответы (1)


С данными примера, которые вы сейчас показали, затем:

$out = New-Object System.Collections.Arraylist
Get-Content C:\Path\To\InputFile.txt | %{$out.AddRange(($_ -split ','))}
$out | Set-Content C:\Path\To\OutputFile.txt

Я обычно составляю списки, потому что почти всегда планирую каким-то образом обработать список. В этом случае, если вам просто нужен новый файл, список не нужен:

(Get-Content input.txt) -split ',' | Set-Content output.txt
person EBGreen    schedule 05.04.2018
comment
(Get-Content input.txt) -split ',' | Set-Content output.txt должно хватить. - person Ansgar Wiechers; 05.04.2018
comment
@AnsgarWiechers Иногда я склонен быть слишком откровенным. Я начал свою карьеру, поддерживая дрянной код других людей, поэтому я часто слишком многословен в своем дрянном коде. :) - person EBGreen; 05.04.2018