我没有编程技巧,但却是一项非常具体的任务:我必须将一个大型文本文件拆分成多个,将它们拆分为特定的文本标记(@)。 我决定尝试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
答案 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
}