我根本无法替换多行文本,或者换句话说,将它们合并为一行。这是文件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
答案 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
}