使用 Powershell 向 CSV 文件添加标头

使用 Powershell 向 CSV 文件添加标头

我有一个 CSV 文件,CSV 文件中的数据如下所示,其垂直格式如下。该文件没有标题,我想向该文件添加标题。当我尝试使用下面的 powershell 脚本添加时,它会添加标题,但它会添加双引号以及删除空格。

我的数据

booker12 ,[email protected],9012,Rachel,Booker ,
grey07   ,                  ,2070,Laura ,Grey   ,
johnson81,                  ,4081,Craig ,Johnson,
jenkins46,[email protected]  ,9346,Mary  ,Jenkins,
smith79  ,[email protected] ,5079,Jamie ,Smith  ,

我期望的输出(只希望添加标题)

Username,Login email,Identifier,First name,Last name
booker12 ,[email protected],9012,Rachel,Booker ,
grey07   ,                  ,2070,Laura ,Grey   ,
johnson81,                  ,4081,Craig ,Johnson,
jenkins46,[email protected]  ,9346,Mary  ,Jenkins,
smith79  ,[email protected] ,5079,Jamie ,Smith  ,

下面是我正在运行的脚本,我得到的输出也在下面。

import-csv "O:\Temp\Import.csv" -Header 'Username','Login email','Identifier','First name','Last name' |
Export-csv "O:\Temp\export.csv" -NoTypeInformation

我得到的输出。

"Username","Login email","Identifier","First name","Last name"
"booker12 ","[email protected]","9012","Rachel","Booker "
"grey07 ","","2070","Laura ","Grey "
"johnson81","","4081","Craig ","Johnson"
"jenkins46","[email protected] ","9346","Mary ","Jenkins"
"smith79 ","[email protected] ","5079","Jamie ","Smith "

输出格式也被删除,并且双引号也被添加。

答案1

您要求“我期望的输出(只希望添加标题)“使用您的示例,以下将执行您所要求的操作。

$File = 'O:\Temp\Import.csv'
$Data = Get-Content -Path $File
$Header = "Username,Login email,Identifier,First name,Last name"
Set-Content $File -Value $Header
Add-Content -Path $File -Value $Data

答案2

Import-CSV仅处理双引号之间的文字。您需要将它们定义为" ""John "。因此,您的原始 CSV 文件的格式不符合您的需求。您必须更改它,或者编写自己的导入函数。

Export-CSV正在寻找-UseQuotes值为never或 的选项AsNeeded。但是,您又会遇到空格问题。

如果只想向文件添加标题,可以执行以下操作:

$file = 'O:\Temp\Import.csv'
"Username,Login email,Identifier,First name,Last name`n" + (Get-Content $file -Raw) | Set-Content $file

相关内容