如何将字符串附加到csv文件的列

时间:2016-12-12 21:28:16

标签: powershell csv

如果我有电子邮件地址列表。

Name, Status,
JSmith, active,
ASmith, active,
JDoe, inactive

我想从list.csv文件(Name列)中提取这些值,并将@ mail.com附加到每个值的末尾。

输出文件看起来像这样

JSmith@mail.com,
ASmith@mail.com,
JDoe@mail.com
Import-Csv list.csv | Format-Table column2 

4 个答案:

答案 0 :(得分:1)

让我试试。

<强> input.csv:

Name,Status
JSmith,active
ASmith,active
JDoe,inactive

代码(文件在我的桌面上):

# import csv file
Import-Csv "$env:USERPROFILE\Desktop\input.csv" -Delimiter "," |
    # create calculated property
    Select-Object @{ Name = "Email"; Expression = { "$($_.Name)@mail.com" } } |
    # remove column header for export
    Select-Object -ExpandProperty Email |
    # export to simple text file
    Out-File "$env:USERPROFILE\Desktop\output.txt"

<强> output.txt的:

JSmith@mail.com
ASmith@mail.com
JDoe@mail.com

答案 1 :(得分:1)

示例:

Import-Csv Test.csv | ForEach-Object {
  New-Object PSObject -Property ([Ordered] @{
    "Name" = $_.Name
    "Status" = $_.Status
    "Email" = "{0}@mail.com" -f $_.Name
  })
} | Export-Csv Test2.csv -NoTypeInformation

这将输出带有新列的新CSV文件。 (由于[Ordered]属性,此示例需要PowerShell v3。您需要删除[Ordered]以便在PowerShell v2中使用该示例。)

如果您只想导入CSV文件并仅输入名称列,并附加@mail.com

Import-Csv Test.csv | ForEach-Object {
  "{0}@mail.com" -f $_.Name
} | Out-File Output.txt

答案 2 :(得分:1)

如果您只是想创建一个电子邮件地址数组作为[string]个实例,(如果需要,您可以将其发送到文件):

> (Import-csv list.csv).Name | % { "$_@mail.com" }
JSmith@mail.com
ASmith@mail.com
JDoe@mail.com

如果您想修改输入中的Name列,请使用电子邮件地址替换名称(如果需要,您可以使用Export-Csv重新导出):

> Import-csv list.csv | % { $_.Name += '@mail'; $_ }

Name        Status  
----        ------  
JSmith@mail active  
ASmith@mail active  
JDoe@mail   inactive

如果您想添加电子邮件地址的列:

> Import-csv list.csv | % { $name = $_.Name; $_ | Add-Member 'Email' "$name@mail.com"; $_ }

Name   Status   Email          
----   ------   -----          
JSmith active   JSmith@mail.com
ASmith active   ASmith@mail.com
JDoe   inactive JDoe@mail.com  

答案 3 :(得分:0)

就这样做

$yourfile="c:\temp\youfile.csv"

(Import-Csv $yourfile  | select *, @{N="Email"; E={"{0}@mail.com" -f $_.Name }}) | 
export-csv $yourfile -notype