将文本文件转换为带有标题的CSV文件

将文本文件转换为带有标题的CSV文件,csv,powershell,text,Csv,Powershell,Text,我有一个关于文本文件的问题,我想将其转换为带有标题的CSV文件 原始区域文本文件如下所示: StepStartTime: 2/1/2016 12:02:03 PM StepStopTime: 2/1/2016 12:02:06 PM StepNumber: 1 NextStepNumber: 2 --------------------------------------------------------------- StepStartTime: 2/1/2016 12:02:06 PM S

我有一个关于文本文件的问题,我想将其转换为带有标题的CSV文件

原始区域文本文件如下所示:

StepStartTime: 2/1/2016 12:02:03 PM StepStopTime: 2/1/2016 12:02:06 PM StepNumber: 1 NextStepNumber: 2 --------------------------------------------------------------- StepStartTime: 2/1/2016 12:02:06 PM StepStopTime: 2/1/2016 12:02:07 PM StepNumber: 2 NextStepNumber: 3 --------------------------------------------------------------- StepStartTime: 2/1/2016 12:02:07 PM StepStopTime: 2/1/2016 12:02:08 PM StepNumber: 3 NextStepNumber: 4 --------------------------------------------------------------- StepStartTime:2/1/2016 12:02:03下午 StepStop时间:2016年2月1日12:02:06下午 步骤编号:1 下一步编号:2 --------------------------------------------------------------- 步骤开始时间:2016年2月1日12:02:06下午 StepStop时间:2016年2月1日12:02:07下午 步骤编号:2 下一步编号:3 --------------------------------------------------------------- StepStartTime:2/1/2016 12:02:07下午 StepStop时间:2016年2月1日12:02:08下午 步骤编号:3 下一步编号:4 --------------------------------------------------------------- 我想得到的是:

StepStartTime,StepStopTime,StepNumber,NextStepNumber 2/1/2016 12:02:03 PM,2/1/2016 12:02:06 PM,1,2 2/1/2016 12:02:06 PM,2/1/2016 12:02:07 PM,2,3 2/1/2016 12:02:07 PM,2/1/2016 12:02:08 PM,3,4 StepStartTime、StepStopTime、StepNumber、NextStepNumber 2016年1月2日12:02:03下午,2016年1月2日12:02:06下午,1,2 2016年1月2日12:02:06下午,2016年1月2日12:02:07下午,2,3 2016年1月2日下午12:02:07,2016年1月2日下午12:02:08,3,4
我正试图让它在PowerShell中工作,但到目前为止运气不好。我可以在基本级别上阅读代码,但要自己组合不同的操作是一步之遥。

将输入读入字符串并在分隔行处拆分

(Get-Content 'C:\path\to\input.txt' -Raw) -split '-{63}'
所以你会得到这样的片段:

StepStartTime: 2/1/2016 12:02:07 PM StepStopTime: 2/1/2016 12:02:08 PM StepNumber: 3 NextStepNumber: 4 这将为每个代码片段提供如下内容:

Name Value ---- ----- StepStopTime 2/1/2016 12:02:08 PM StepNumber 3 NextStepNumber 4 StepStartTime 2/1/2016 12:02:07 PM 要获取可导出为CSV的格式,请执行以下操作:

StepStopTime StepNumber NextStepNumber StepStartTime ------------ ---------- -------------- ------------- 2/1/2016 12:02:08 PM 3 4 2/1/2016 12:02:07 PM
注意:如果您仍在使用PowerShell v2,则需要更换

Get-Content 'C:\path\to\input.txt' -Raw
有点像

Get-Content 'C:\path\to\input.txt' | Out-String

以单个字符串的形式获取文件的内容。在PowerShell v3之前,参数
-Raw
不可用。

将输入读入字符串,并在分隔行处拆分

(Get-Content 'C:\path\to\input.txt' -Raw) -split '-{63}'
所以你会得到这样的片段:

StepStartTime: 2/1/2016 12:02:07 PM StepStopTime: 2/1/2016 12:02:08 PM StepNumber: 3 NextStepNumber: 4 这将为每个代码片段提供如下内容:

Name Value ---- ----- StepStopTime 2/1/2016 12:02:08 PM StepNumber 3 NextStepNumber 4 StepStartTime 2/1/2016 12:02:07 PM 要获取可导出为CSV的格式,请执行以下操作:

StepStopTime StepNumber NextStepNumber StepStartTime ------------ ---------- -------------- ------------- 2/1/2016 12:02:08 PM 3 4 2/1/2016 12:02:07 PM
注意:如果您仍在使用PowerShell v2,则需要更换

Get-Content 'C:\path\to\input.txt' -Raw
有点像

Get-Content 'C:\path\to\input.txt' | Out-String

以单个字符串的形式获取文件的内容。在PowerShell v3之前,参数
-Raw
不可用。

如果我使用上述代码,那么我只将StepStartTime值作为列获取。其他专栏我看不到。从stringData转换似乎工作不正常?直到替换工作正常为止。提前感谢!您正在使用PowerShell v2,或者在读取输入文件时忽略了参数
-Raw
。对于PowerShell v2管道,
Get Content
output String(
(Get Content'C:\path\to\input.txt'| outstring)
),否则添加缺少的参数。如果我使用上述代码,我只将StepStartTime值作为列获取。其他专栏我看不到。从stringData转换似乎工作不正常?直到替换工作正常为止。提前感谢!您正在使用PowerShell v2,或者在读取输入文件时忽略了参数
-Raw
。对于PowerShell v2管道,通过
输出字符串
(获取内容'C:\path\to\input.txt'|输出字符串)
)获取内容,否则添加缺少的参数。