[英]powershell combine column in CSV
我正在尝试自动化包含大量数据行的CSV文件。 这是一个示例:
==========================
= ID = Last Name =User ID=
= 22 = Smith = 0077 =
= 22 = Smith = 0078 =
= 22 = Smith = 0079 =
= 22 = Jones = 0081 =
而这样的例子不胜枚举。
我想做的是将列ID与列姓氏合并,并使用Powershell将其放入新的CSV文件中。 我尝试了以下方法:
@ {n ='ID'; e = {$ .ID + `` -” + $。姓氏}}
虽然运气不好。
任何帮助,将不胜感激。
我将首先开始使内容csv兼容:
Get-Content file.txt |
Where-Object {$_ -match '^\s+=\s.+\s+=$'} |
ForEach-Object { $_ -replace '^\s+=\s*|\s+=$' -replace '\s+=\s+',','} |
ConvertFrom-Csv -Header ID,LastName,UserID
ID LastName UserID
-- -------- ------
22 Smith 0077
22 Smith 0078
22 Smith 0079
22 Jones 0081
然后使用Select-Object
创建一个新列:
...
ConvertFrom-Csv -Header ID,LastName,UserID |
Select @{n=’ID’;e={$_.ID + '-' + $_.LastName}},UserID
ID UserID
-- ------
22-Smith 0077
22-Smith 0078
22-Smith 0079
22-Jones 0081
列标题中有空格,这应该是您可以解决的第一件事。 除此之外,这是我的示例emp.csv文件,脚本,然后是newemp.csv作为解决方案。
id loginid firstname lastname
1 abc123 John patel
2 zxy321 Kohn smith
3 sdf120 Maun scott
4 tiy123 Dham rye
5 k2340 Naam mason
6 lk10j5 Shaan kelso
7 303sk Doug smith
脚本
$objs =@();
$output = Import-csv -Path C:\Scripts\so\emp.csv | ForEach {
$Object = New-Object PSObject -Property @{
Computed = [String]::Concat($_.id,$_.lastname)
Firstname = $_.firstname
}
$objs += $Object;
}
$objs
$objs | Export-CSv C:\Scripts\so\newemp.csv
Computed Firstname
1patel John
2smith Kohn
3scott Maun
4rye Dham
5mason Naam
6kelso Shaan
7smith Doug
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.