2014-09-26 1 views
0

위치 열을 기반으로 .csv 파일을 필터링하려고합니다. 열에는 다양한 위치 항목이 있으며 특정 위치가 포함 된 행의 정보 만 필요하므로 그 정보는 별도의 .csv 파일로 내보내집니다. .csv 파일을 각 위치 필터를 사용하여 여러 번 검색하여 작동하도록 할 수는 있지만 검색을 1 개로 결합 할 때 어떤 행운을 보지 못했습니다..csv 어디에서 개체 필터를 결합 할 수 있습니까?

는 내가 지금 가지고있는 것은 :

$csv = Import-Csv "${filepath}\temp1.csv" 
    $csv | Where-Object location -like "co*" | select EmployeeNumber | Export-Csv "${filepath}\disablelist.csv" -NoTypeInformation 
    $csv | Where-Object location -like "cc*" | select EmployeeNumber | Export-Csv "${filepath}\disablelist.csv" -Append -NoTypeInformation 
    $csv | Where-Object location -like "dc*" | select EmployeeNumber | Export-Csv "${filepath}\disablelist.csv" -Append -NoTypeInformation 
    $csv | Where-Object location -like "mf*" | select EmployeeNumber | Export-Csv "${filepath}\disablelist.csv" -Append -NoTypeInformation 

내가 가지고 싶습니다 아래의 같은 것입니다. 나는 그것으로 오류를 얻을하지 않습니다,하지만 난 얻을 모든 빈 .csv 파일이다 : 나는 잠시 동안 여기에 숨어있다 그리고 나는 보통에서 함께 스크립트를 프랑켄슈타인 수 있어요

$locations = "co*","cc*","dc*","mf*" 
    $csv = Import-Csv "${filepath}\temp1.csv" 
    $csv | Where-Object location -like $locations | select EmployeeNumber | Export-Csv "${filepath}\disablelist.csv" -NoTypeInformation 

무엇 나는 찾는다. 그러나 이것에 관해 무엇인가 발견 할 수 없다. 당신의 도움을 주셔서 감사합니다.

답변

1

당신은 교류 정규식 사용하여 하나의 -match 테스트 여러 -like 시험을 대체 할 수있다 : 당신은 문자열 배열에서 해당 정규식을 구축 할 수 있습니다

$csv = Import-Csv "${filepath}\temp1.csv" 
$csv | Where-Object {$_.location -match '^(co|cc|dc|mf)'} | 
    select EmployeeNumber | 
    Export-Csv "${filepath}\disablelist.csv" -NoTypeInformation 

:

$locations = 'co','cc','dc','mf' 
$LocationMatch = '^({0})' -f ($locations -join '|') 

$csv = Import-Csv "${filepath}\temp1.csv" 
$csv | Where-Object { $_.location -match $LocationMatch } | 
    select EmployeeNumber | 
    Export-Csv "${filepath}\disablelist.csv" -NoTypeInformation 
+0

당신이 mjolinor 감사, 완벽하게 작동 ! – tlock

관련 문제