【问题标题】:Powershell outputs CSV data into multiple lines instead of single linePowershell 将 CSV 数据输出到多行而不是单行
【发布时间】:2019-05-08 15:56:04
【问题描述】:

我有一个 CSV 文件,其中包含一些用户和 ID 的数据,我必须在每个条目中添加一个由他们的 name.surname@domain 组成的邮件。虽然它设法将其打印到文件中,但当我打开文件时,它已被格式化,因此每一列都被分隔成一个条目。

$origin = Get-Content $file

$origin = foreach{ $line= $_.Split(",")

$line+","+line[0].ToLower()+"."+line[1].ToLower()+"@"+$domain

} | Set-Content $outputfile

如果文件有 1 个类似的条目

john,doe,1234

文件的输出应该是

john,doe,1234,john.doe@mail.com

而是将每个属性打印为一列

john
doe
1234
@
mail.com

是我使用了错误的打印方式还是循环错误?

【问题讨论】:

  • 使用Import-Csv读入数据,如果没有header,用-Header参数指定。阅读Get-Help Import-Csv
  • 您发布的代码也是无效的,缺少$ 符号并且第二行必须是$origin | foreach{ $line= $_.Split(",") 另外$line 是一个数组,由于拆分包含3个元素[0..2] ,如果你输出一个数组,元素默认在 sep 上。线。所以应该是$_+","+$line[0].ToLower()+"."+$line[1].ToLower()+"@"+$domain

标签: powershell csv


【解决方案1】:

该文件是一个 .csv 文件。充分利用这一点。

Import-Csv -Path './joe.csv' -Header fname, lname, empnum |
    Select-Object -Property *, @{Name='email';Expression={$_.fname + '.' + $_.lname + '@mail.com'}} |
    Export-Csv -Path './joe2.csv' -NoTypeInformation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 2015-01-17
    • 1970-01-01
    相关资源
    最近更新 更多