我需要使用PowerShell将多个文本文件(跳过标题)连接成一个大文件。目前我正在使用此命令:
nil
我现在有两个问题:
Get-Content *.txt |
Select-String -Pattern "^[1-9]" |
Select-Object line |
Export-Csv mybigfile.txt
,我只需要像源文件一样CRLF
。示例:
来源输入:
h1,h2,h3,h4 3145,"blabla",4568,""LF
当前输出:
"3145,""blabla"",4568,""""CRLF
期望的输出:
3145,"blabla",4568,""LF
答案 0 :(得分:1)
PowerShell cmdlet使用系统的默认行终止符(CR-LF),因此无法执行您想要的操作。改为使用StreamWriter
:
$reader = New-Object IO.StreamReader 'C:\path\to\input.txt'
$writer = New-Object IO.StreamWriter ('C:\path\to\output.txt', $true)
# override default line terminator
$writer.NewLine = "`n"
# skip first line of input file
if ($reader.Peek() -ge 0) {
$reader.ReadLine() | Out-Null
}
while ($reader.Peek() -ge 0) {
$writer.WriteLine($reader.ReadLine())
}
$reader.Close(); $reader.Dispose()
$writer.Close(); $writer.Dispose()
答案 1 :(得分:0)
将Get-ChildItem cmdlet与-Filter
参数一起使用以检索所有文本文件,使用Get-Content加载内容并使用Select-Object cmdlet和{跳过第一行{1}}参数。
然后您有一个字符串数组,您可以通过-skip
连接在一起,最后使用Out-File cmdlet编写该文件:
LF