2017-02-08 9 views
0

안녕 모두,일치하는 라인

나는 아래의 스크립트에 문제가 있어요. 다음은 요구 사항입니다.

1) 각 텍스트 파일을 하나의 CSV 파일과 비교해야합니다. CSV 파일에는 텍스트 파일에있는 데이터가 일치해야합니다. 텍스트 파일의 데이터가 일치하는 경우

2), 출력 텍스트 파일이 0으로 CSV 파일, 출구에는 일치가없는 경우 만 일치하고 실행 작업 등

3) 일치하는 항목이 없습니다로 녹이다.

나는이 일을 시도했지만, 결국 나는 성냥과 또한 일치하지 않는다. 내가 정말 필요한 것은, 라인과 일치하는 작업을 실행, 종료, 텍스트 파일에는 일치가없는 경우, 다음 0

$CSVFIL = Import-Csv -Path $DRIVE\test\csvfile.csv 
$TEXTFIL = Get-Content -Path "$TEXTFILFOL\*.txt" | 
    Select-String -Pattern 'PAT1' | 
    Select-String -Pattern 'PAT2' | 
     Select-String -Pattern 'TEST' 

ForEach ($line in $CSVFIL) { 

If ($TEXTFIL -match $line.COL1) { 

Write-Host 'RUNNING:' ($line.JOB01) 

} else { 

write-host "No Matches Found Exiting" 

답변

0

내가이 다른 방식으로 처리 할 반환하는 것입니다. 경기는 이것에 대한 0

$matches = @() 

foreach ($line in $CSVFIL) 
{ 
    if ($TEXTFIL -contains $line.COL1) 
    { $matches += $line } 
} 

if ($matches.Count -gt 0) 
{ 
    $matches | Foreach-Object { 
     Write-Output "Running: $($_.JOB01)" 
    } 
} 
else 
{ 
    Write-Output "No matches found, exiting" 
} 
+0

감사 프로세스 다른 출력을 다음이 있다면 먼저 당신이 일치하는 항목을 찾을 필요, 나는 $ 선을 -contains 같은 CSV 파일에 일치하는 몇 가지 추가 조건을 추가하고 싶습니다 .COL1 -and $ CD1 -match $ line.COL2 – RYU1

+0

'-match' 비교기는 COL2에 당신이 기대하는 것을 얻지 못하는 Regex 문이 포함되어 있지 않으면 Regex를 사용합니다. 어떻게 비교하고 싶니? 또한 1000 명 이상을 부탁해 주셔서 고맙습니다. D = –

+0

1000 명이 넘는 것을 기쁘게 해드립니다. 추가 텍스트 필드를 비교하고 싶습니다. -match $ env.computername. 이것은 다른 컴퓨터에서이 작업을 수행 할 때 내가 사용중인 컴퓨터의 목록을 좁 힙니다. – RYU1

0
$CSVFIL = Import-Csv -Path "$DRIVE\test\csvfile.csv" 
Get-Content -Path "$TEXTFILFOL\*.txt" | 
where {$_ -like "*PAT1*" -and $_ -like "*PAT2*" -and $_ -like "*TEST*" } | 
    %{ 
    $TEXTFOUNDED=$_; $CSVFIL | where {$TEXTFOUNDED -match $_.COL1} | 
    %{ [pscustomobject]@{Job=$_.JOB01;TextFounded=$TEXTFOUNDED;Col=$_.COL1 } }   

    }