如何使用Powershell替换多个文件中的多行文本

时间:2019-10-13 10:34:26

标签: powershell

我根本无法替换多行文本,或者换句话说,将它们合并为一行。这是文件c:\ me \ testes.text的示例,内容如下

<error.error1>
<error.rec2>
<error.short3>
<error.error4>
<error.rec5>
<error.short6>

我的例外情况:我想将多个文件中的前三行合并或替换为单个行

<error.error1> <error.rec2> <error.short3>
<error.error4> <error.rec5> <error.short6>

我能够合并前两行,但这里是三行。

请帮助, MJ

1 个答案:

答案 0 :(得分:1)

使用Get-Content通过指定-ReadCount参数一次读取3行文件,将这3行通过管道传输到ForEach-Object并将它们连接在一起。

Get-Content "c:\me\testes.text" -ReadCount 3 | ForEach-Object {
    $_ -join ' '
}

输出如下:

<error.error1> <error.rec2> <error.short3>
<error.error4> <error.rec5> <error.short6>

要读取多个文件,您可以一次从Get-ChildItem到循环中三行,然后从文件中获取内容,然后再将其重新结合在一起并写回到各自的文件中。

Get-ChildItem -Path c:\me\testes\* -Filter *txt | ForEach-Object {
    (Get-Content -LiteralPath $_.FullName -ReadCount 3) | ForEach-Object {
        $_ -join ''
    } | Set-Content -LiteralPath $_.FullName
}