2013-06-28 2 views
0

CSV 파일을 가져와야하고 foreach에 조건을 직접 입력하고 싶습니다. 내 말은 :PowerShell - Csv : 조건이있는 foreach?

는 CSV를 읽으려면, 내가 (예 내 구분자는 \) :

그런 다음
$csv = Import-Csv -Delimiter \ -Path $mypath -Header 'column1', 'column2', 'column3' 

내가 : 내가

foreach($line in $csv) 
{ 
#Actions 
} 

할 좋아하지만 것이 무엇 가능한 경우 알지 못합니다.

for($i =1; $i -lt $myarray.Length; $i++) 
{ 
    foreach($line in $csv) | Where $line.column2 -eq $myarray[$i] 
    { 
     #Actions only if $line.column2 is equal to $myarray[$i] 
    } 
} 

그래서 배열 안에 이름이 있습니다. csv의 열이 내 배열의 정보와 일치하는 경우에만 #Actions를 수행하려고합니다. 그렇지 않다면 $ csv에서 $ line을 변경하고 싶습니다.

내가 작성한 아이디어는 너무 무거워 보입니다.이 작업을 수행하는 데 더 빠르고 (강하고 #DaftPunk) 방법이 있다고 생각합니다. 누군가가 이미 전에이를 사용하는 경우

, 내가 사전에 :)

감사합니다,

니코을 알려 주시기 바랍니다. 난 그냥 내가 만약 조건이 할 수있는 것을 깨달았다 :

for($i =1; $i -lt $myarray.Length; $i++) 
{ 
    foreach($line in $csv) 
    { 
     if($line.column2 -eq $myarray[$i] 
     { 
     #Actions 
     } 
    } 
} 

하지만 난 여전히 생각을하는 : |;

P.S)

편집을 내 영어에 대한 사과 #Conditions이 더 어디 루프 내에서, 여기

Import-Csv ... | Foreach-Object{ 

    if(something) 
    { 
     #do something with the current object and write it back to the pipeline 
     $_ = ... 
     $_ 
    } 
    else 
    { 
     # write the object back to the pipeline 
     $_ 
    } 
} 

답변

1

당신은 사용할 수 있습니다. 감사.
+0

감사합니다 :) 내가 이것을 사용합니다 일반적인 접근 방식의 경우 ... – Nico

+0

예, ** if ($ .HeaderName -eq desiredValue) {}가 작동하거나 where-object도 가능합니다. –