Powershell:使用字符串

时间:2016-02-24 21:54:13

标签: powershell

我没有编程技巧,但却是一项非常具体的任务:我必须将一个大型文本文件拆分成多个,将它们拆分为特定的文本标记(@)。 我决定尝试Powershell脚本来实现这一目标。

到目前为止,这就是我的想法:

InputFile = "c:\test.txt"
$Reader = New-Object System.IO.StreamReader($InputFile)
$a = 1
While (($Line = $Reader.ReadLine()) -ne $null) {
    If ($Line -match "@") {
        $OutputFile = "c:\splittedfile$a.txt"
        $a++
    }    
    Add-Content $OutputFile $Line
} 

现在,我想要实现的不是简单地在循环上建立文件名。相反,每个新文件的第二行是作为文件名,我不知道如何做到这一点。

编辑@Jason Boyd:根据Jason的评论指定文件的结构: 它基本上是一个wiki的大模板,这就是为什么生成的文本文件需要具有特定的名称(在第一个例子中为“buenos aires_audiencia_rpl”。行数不是恒定的,因为“Comentario”可以预先填充并且具有换行。

@
buenos aires_audiencia_rpl
======= Buenos Aires, Audiencia (RPL) ======= 
^Variantes | | 
===== Comentario =====

 ====  Geografía ====  
 ==== Historia institucional ==== 
 ====  Población y economía ==== 
 ==== Iglesia ==== 
 ====  Bibliografia ==== 
 ====  Citas textuales ==== 
 @
caracas_audiencia_ven 

1 个答案:

答案 0 :(得分:3)

条件匹配后,您可以阅读另一行:

While (($Line = $Reader.ReadLine()) -ne $null) {
    If ($Line -match "@") {
        $OutputFile = $Reader.ReadLine()
        Add-Content $OutputFile $Line
        $Line = $OutputFile
        $a++
    }    
    Add-Content $OutputFile $Line
}