2017-01-29 7 views
-1

Я использовал регулярное выражение для извлечения строки из файла и экспорта в CSV. Я мог бы выяснить, как извлечь каждое значение соответствия в разные строки. Результат будет в конечном итоге в одной клеткеЭкспорт данных в другую строку CSV с использованием regex

{ 69630e4574ec6798, 78630e4574ec6798, 68630e4574ec6798}

мне нужно быть в разных строках в формате CSV, как показано ниже:

69630e4574ec6798 
78630e4574ec6798 
68630e4574ec6798
$Regex = [regex]"\s[a-f0-9]{16}" 
Select-Object @{Name="Identity";Expression={$Regex.Matches($_.Textbody)}} | 
    Format-Table -Wrap | 
    Export-Csv -Path c:\temp\Inbox.csv -NoTypeInformation -Append 

Детали скриншот:

screenshot


Edit:

Я пытался разделить данные есть в моей CSV, но я с трудом в расколоть выходные данные «идентификатор» в следующую строку, как все они в одной клетке «{56415465456489944,564544654564654, 46565465}». На скриншоте ниже строки первой пары находятся исходный вход, а выделенные строки во второй группе - это результат, который я пытаюсь получить.

Screenshot

+0

Показать несколько строк данных. –

ответ

0

Измените регулярное выражение так, что он имеет шестнадцатеричные подстроки в захвате группы (чтобы исключить ведущие пробела):

$Regex = [regex]"\s([a-f0-9]{16})" 

затем извлечь первую группу из каждого матча:

$Regex.Matches($_.Textbody) | ForEach-Object { 
    $_.Groups[1].Value 
} | Set-Content 'C:\temp\a.txt' 

Используйте Set-Content, а не Out-File, поскольку последний будет создавать выходной файл в формате Unicode по умолчанию, тогда как прежний по умолчанию используется для вывода ASCII (оба командлета позволяют переопределить значение по умолчанию с помощью параметра -Encoding).


Edit:

Чтобы разделить данные от вас id колонок и создать отдельные строки для каждого идентификатора вы могли бы сделать что-то вроде этого:

Import-Csv 'C:\path\to\input.csv' | ForEach-Object { 
    $row = $_ 
    $row.id -replace '[{}]' -split ',' | ForEach-Object { 
    $row | Select-Object -Property *,@{n='id';e={$_}} -ExcludeProperty id 
    } 
} | Export-Csv 'C:\path\to\output.csv' -NoType 
+0

Спасибо, что ответили на мой вопрос. Я пробовал код, но он не работал, как я ожидал. Я также добавил данные моментального снимка в вопросе для лучшего понимания. – radz

+0

Совершенно очевидно, что вы получили результат на скриншоте из образца кода, который я разместил. Обновите свой вопрос с помощью входного образца и [mcve], который производит нежелательный вывод. –

+0

Ansgar Я пробовал использовать предоставленный вами код, но не увенчался успехом. Я не могу загрузить весь код из-за соответствия и вместо этого загрузить моментальный снимок того, что я пытаюсь получить. – radz