Powershell详细重复行

时间:2014-12-29 07:11:36

标签: powershell

我的文件内容如下:
    标题1
    细节A
    细节B
    细节C
    标题2
    细节X
    细节Y
    细节Z

我需要提取标题和详细信息。应该有2列。标题数据位于第一列,详细数据位于第二列。 “标题”文本之后的数据是实际数据(即在“标题1”中,“1”是标题值)。 “细节”文本之后的数据是实际细节数据(即在“细节A”中,“A”是细节值)。 我想使用PowerShell提取标题和详细信息,但标题应重复每个细节。
例如,第一列是标题值,第二列是详细值:
 1 A
 1 B
   1 C
 2 X
 2 Y
  2 Z

我认为这很简单,但我真的很挣扎。任何帮助,将不胜感激。 TIA。下面是我最接近我想要的结果,但它只返回第一个值:

$data = get-content 'C:\temp\file.txt'

Switch -Regex ($Data)
{
 '^header(.+)' {$Data = `[PSCustomObject]@{header=$Matches[1];detail=$DefValue}}`
 '^detail(.+)' {$Data.detail = $matches[1]}
 }

1 个答案:

答案 0 :(得分:1)

你其实很亲密......

switch -File .\file.txt -Regex {
    '^header(.+)' {
        $Data = [PSCustomObject]@{
            header = $Matches[1]
            detail = $DefValue}
        }
    '^detail(.+)' {
        $Data.detail = $matches[1];
        $Data
    }

}

的变化:

  • 使用-file上的switch选项代替Get-Content
  • 为每个找到的标题创建新对象的修改语法(我怀疑引用不是故意的)
  • 最后但并非最不重要:输出'产品'什么时候完成。

可能的其他修改:

  • 在值之前/之后删除空格:'^header ([\S]+)'