多个正则表达式匹配在Powershell - Output与Add-Content在同一行



我有一些TXT文件,其中有两行内容我想匹配并添加到另一个文件:

我正在使用这个命令:

Select-String -path '.*.txt' -Pattern '((?<=Pattern1 ).*|(?<=Pattern2: ).*)' -AllMatches| ForEach-Object{$_.Matches.Value} | Add-Content C:List.xls

它可以工作,但是在输出List.xls中,来自每个输入文本的两个期望匹配被放在两行中,如下所示:

Match1
Match2

所以,当我试图打开(导入)我的列表。xls在Libreoffice Calc,它不会让我把Match1和Match2在不同的列。它强制两行。

是否有一种方法,我可以改变选择字符串代码,使匹配出来像这样:

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用指定的分隔符(,)连接数组元素。

根据Olaf的评论使用csv扩展。使用[PSCustomObject]Export-Csv可能是一种方式,这取决于你需要在PowerShell中做什么。

最新更新