我使用正则表达式从文件中提取字符串并导出为CSV。我可以弄清楚如何将每个匹配值提取到不同的行。结果将以单个单元格结束
{ 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
详情截图:
修改
我一直在尝试拆分我在CSV中的数据,但是我很难分割输出数据" id"下一行,因为他们都进入一个单元格" {56415465456489944,564544654564654,46565465}"。 在下面的屏幕截图中,前两行是源输入,第二组中突出显示的行是我想要获得的输出。
答案 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输出(两个cmdlet都允许通过参数{{1覆盖默认值] }})。
修改强>
要从您-Encoding
列拆分数据并为每个ID创建单独的行,您可以执行以下操作:
id