我有一个像这样的csv文件:
userid;memberof
user1;groupid1
user2;groupid3
user1;groupid7
user2;groupid8
我想创建一个像这样的文件csv:
user1;groupid1|groupid7
user2;groupid3|groupid8
我在这个论坛上看到过这可以用哈希表完成,但我无法成功。
我不得不说我是PowerShell的新手,请原谅这个问题。
答案 0 :(得分:1)
不需要借口,这是一个非常棘手的问题;)
Import-CSV YourFile.txt -Delim ";" | Group-Object userid |
Select-Object @{ name="UserId"
expr={$_.Name}},
@{ name="MemberOf"
expr={($_.Group |% { $_.memberof }) -join "|" }} |
Export-CSV YourNewFile.txt -Delim ";" -NoTypeInformation
请注意,这将包括标题行“UserId; MemberOf”,所以如果你真的不想那样,那么你应该安排把它砍掉。
使用ConvertTo-CSV代替Export-CSV,将其分配给变量,然后将其写出来:
$output = ... |
ConvertTo-CSV -Delim ";" -NoTypeInformation
Set-Content YourNewFile.txt $output[1..($output.count)]
答案 1 :(得分:0)
$original = Import-Csv .\a.csv -Delimiter ';'
$expression = {[string]::Join('|', ($_.Group | Select -expand memberof))}
$original | Group-Object userid | Select-Object @{n="userid";e={$_.Name}}, @{n="memberof";e=$expression} | Export-Csv ./b.csv -NoTypeInformation -Delimiter ';'