2012-01-05 6 views
1

내가 PowerShell은 초보자를 그리고 난 이런 .csv 파일이 : 나는 그룹에서 첫 번째 항목을 얻을 수 있도록 내가 첫 번째 열에서 공백으로 항목을 대체 할 수있는 방법배열에서 항목을 바꾸는 방법은 무엇입니까?

Group1; User_A 
Group1; User_B 
Group2; User_A 
Group2; User_D 
Group2; User_C 

을 :

Group1; User_A 
     ; User_B 
Group2; User_A 
     ; User_D 
     ; User_C 

나는

$header = "Group", "User" 
$adg = Import-Csv "C:\temp\users.csv" -Header $header -Delimiter ";" 
$adg | ForEach-Object {$_ -replace "Group1", ""} 

뭔가를 시도했지만 내가 진행하는 방법을 단서가없는

+0

문자열 또는 객체 집합으로 결과가 필요합니까? –

+0

문자열로 일반적으로 그룹에있는 문자열을 대체하고 $ adg에 다시 쓰십시오. – jrara

답변

2

어떻게 이런 일에 대해 :

$csv = Import-Csv "Test.csv" -Header "Group", "User" -Delimiter ";" 

$lastGroup = "" 
$csv | % { 
    if ($lastGroup -eq $_.Group) { 
     $_.Group = "" 
    } else { 
     $lastGroup = $_.Group 
    } 
} 

$csv | ConvertTo-Csv -Delimiter ';' -NoTypeInformation 

출력 :

"Group";"User" 
"Group1";"User_A" 
"";"User_B" 
"Group2";"User_A" 
"";"User_D" 
"";"User_C" 

업데이트 : 그냥 여기에 재미를 위해

정확하게 귀하의 예제처럼 보이는 뭔가를 출력하는 버전이 :

$csv = Import-Csv "C:\Documents and Settings\arisman1\Desktop\Test.csv" -Header "Group", "User" -Delimiter ";" 

$lastGroup = "" 
$longestGroupName = $csv | select -Expand Group | Measure-Object -Property Length -Maximum 

$csv | % { 
    if ($lastGroup -eq $_.Group) { 
     $_.Group = " " * $longestGroupName.Maximum 
    } else { 
     $lastGroup = $_.Group 
    } 
} 

$csv | ConvertTo-Csv -Delimiter ';' -NoTypeInformation | % {$_ -replace '"', ''} | select -Skip 1 

출력 :

Group1;User_A 
     ;User_B 
Group2;User_A 
     ;User_D 
     ;User_C 
+0

위대한 작품처럼 매력, 많은 감사합니다 !!! – jrara

관련 문제