首页 > 解决方案 > 在 Powershell 中合并多个 CSV 文件的问题

问题描述

我在这里找到了一个漂亮的命令 - http://www.stackoverflow.com/questions/27892957/merging-multiple-csv-files-into-one-using-powershell我用来合并 CSV 文件 -

Get-ChildItem -Filter *.csv | Select-Object -ExpandProperty FullName | Import-Csv | Export-Csv .\merged\merged.csv -NoTypeInformation -Append

现在,这就像它在锡上所说的那样,并且在大多数情况下都很好用。但是,我有两个问题,我想知道是否有办法克服它们:

首先,合并的 csv 文件具有 CRLF 行结尾,我想知道如何在生成文件时将行结尾设为 LF?

此外,似乎有一些恶作剧的引号被添加/移动。举个例子:

来自初始 CSV 的示例行:

"2021-10-05"|"00:00"|"1212"|"160477"|"1.00"|"3.49"LF

合并的 CSV 中的同一行:

"2021-10-05|""00:00""|""1212""|""160477""|""1.00""|""3.49"""CRLF

所以看到第一行已经失去了它的尾引号,其他字段有双引号,并且行的末尾有一个额外的引号。我不太确定这里发生了什么,所以任何帮助将不胜感激!

标签: powershellcsv

解决方案


对于处理引号,“问题”的原因是您的 CSV 没有使用Import-CSV假定的默认字段分隔符 - CSV中的C代表comma,而您正在使用竖线。将参数添加到和cmdlet。-Delimiter "|"Import-CSVExport-CSV

我认为您对行尾字符(CRLF vs LF)无能为力;这几乎可以肯定是依赖于操作系统的。


推荐阅读