Powershell 中的多个正则表达式匹配 - 在同一行中使用 Add-Content 输出
Multiple regex matches in Powershell - Output with Add-Content in the same line
我有一些 TXT 文件,其中有两行内容我想匹配并添加到另一个文件:
我正在使用这个命令:
Select-String -path '.\*.txt' -Pattern '((?<=Pattern1 ).*|(?<=Pattern2: ).*)' -AllMatches| ForEach-Object{$_.Matches.Value} | Add-Content C:\List.xls
它有效,但在输出 List.xls 上,每个输入文本的两个预期匹配项被放在两行中,如下所示:
Match1
Match2
因此,当我尝试在 Libreoffice Calc 上打开(导入)我的 List.xls 时,它不会让我将 Match1 和 Match2 放在不同的列中。它强制两行。
有什么方法可以更改 Select-String 代码,使匹配结果如下所示:
Match1,Match2
这样,当我打开(导入)List.xls 文件时,Openoffice Calc 将能够在两列中分隔 Match1 和 Match2。
非常感谢。
$myMatches = Select-String -path '.\*.txt' -Pattern '((?<=Pattern1 ).*|(?<=Pattern2: ).*)' -AllMatches |
ForEach-Object {
$_.Matches.Value
}
($myMatches -join ',') | Add-Content C:\List.csv
-join
使用指定的分隔符 (,
) 连接数组元素。
根据 使用 csv
扩展名。使用 [PSCustomObject]
和 Export-Csv
可能是可行的方法,具体取决于您需要在 PowerShell 中执行的其他操作。
我有一些 TXT 文件,其中有两行内容我想匹配并添加到另一个文件:
我正在使用这个命令:
Select-String -path '.\*.txt' -Pattern '((?<=Pattern1 ).*|(?<=Pattern2: ).*)' -AllMatches| ForEach-Object{$_.Matches.Value} | Add-Content C:\List.xls
它有效,但在输出 List.xls 上,每个输入文本的两个预期匹配项被放在两行中,如下所示:
Match1
Match2
因此,当我尝试在 Libreoffice Calc 上打开(导入)我的 List.xls 时,它不会让我将 Match1 和 Match2 放在不同的列中。它强制两行。
有什么方法可以更改 Select-String 代码,使匹配结果如下所示:
Match1,Match2
这样,当我打开(导入)List.xls 文件时,Openoffice Calc 将能够在两列中分隔 Match1 和 Match2。
非常感谢。
$myMatches = Select-String -path '.\*.txt' -Pattern '((?<=Pattern1 ).*|(?<=Pattern2: ).*)' -AllMatches |
ForEach-Object {
$_.Matches.Value
}
($myMatches -join ',') | Add-Content C:\List.csv
-join
使用指定的分隔符 (,
) 连接数组元素。
根据 csv
扩展名。使用 [PSCustomObject]
和 Export-Csv
可能是可行的方法,具体取决于您需要在 PowerShell 中执行的其他操作。