如何从多个文件中读取和解析?

时间:2015-06-06 18:12:50

标签: powershell powershell-v3.0

我需要读取每个内容的3个文本文件,然后获取相关字段,最后将这些字段一起输出到新的文本文件中。每个文件的所有字段应输出为一行(无换行符)。

我的问题在于最终输出步骤。

这是获取内容部分:

$raw = Get-Content "C:\folderpath\*.*"
$raw =$raw | Select-String -Pattern "string1", "string2", "string3"
$raw

我得到以下结果(所有文件解析后的字符串一个接一个堆叠):

PS C:\> $raw = Get-Content "C:\ProgramData\CyberTech\Content\audio1\2015-06-02\1\*.*"
PS C:\> $raw =$raw | Select-String -Pattern "Channel=", "StartTime=", "StopTime=", "Duration=", "FileName=" 
PS C:\> $raw

string1=1
string2=8
string3=2015-06-02 23:58:11
string1=1
string2=8
string3=2015-06-02 23:58:11
string1=1
string2=8
string3=2015-06-02 23:58:11

我的问题是:如何输出这些结果,如下例所示(同一行中的3个文件串中的每一个)?

String1 String2 String3
String1 String2 String3
String1 String2 String3

1 个答案:

答案 0 :(得分:0)

假设这是您的allocate_ids(count)输出:

$raw

你想要这个结果:

string1=1
string2=8
string3=2015-06-02 23:58:11
string1=1
string2=8
string3=2015-06-02 23:58:11
string1=1
string2=8
string3=2015-06-02 23:58:11
你可以这样做:

string1=1 string2=8 string3=2015-06-02 23:58:11
string1=1 string2=8 string3=2015-06-02 23:58:11
string1=1 string2=8 string3=2015-06-02 23:58:11

捕获组应匹配除第一个之外的所有字段名称,因此,如果您的名称与$raw = Get-Content "C:\folderpath\*.*" $raw = $raw | Select-String -Pattern "string1", "string2", "string3" ($raw | Out-String) -replace "`r`n(string[23])", ' $1' string2不相同,则使用替换字段:

string3