1

次のような csv ファイルがあります。

userid;memberof
user1;groupid1
user2;groupid3
user1;groupid7
user2;groupid8

そして、次のようなcsvファイルを作成したい:

user1;groupid1|groupid7
user2;groupid3|groupid8

このフォーラムで、これはハッシュテーブルで実行できることを見てきましたが、うまくいきませんでした。

私はpowershellが初めてだと言わざるを得ないので、質問を許してください。

4

2 に答える 2

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」が含まれるため、本当にそれが必要ない場合は、切り捨てるように手配する必要があります。

Export-CSV の代わりに ConvertTo-CSV を使用し、それを変数に割り当ててから、次のように記述します。

 $output = ... | 
    ConvertTo-CSV -Delim ";" -NoTypeInformation 
 Set-Content YourNewFile.txt $output[1..($output.count)]
于 2012-09-25T17:47:59.767 に答える
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 ';'
于 2012-09-25T18:28:59.353 に答える