如果我有电子邮件地址列表。
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
答案 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