繁体   English   中英

Powershell CSV合并列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM