根据 CSV 中的值匹配文本文件中的行
Matching Lines in a text file based on values in CSV
大家好,
我在使用以下脚本时遇到问题。这是要求:
1) 每个文本文件都需要与单个 CSV 文件进行比较。 CSV 文件包含文本文件中应匹配的数据。
2) 如果文本文件中的数据匹配,则只输出匹配项和运行个职位等..
3) 如果文本文件与 CSV 文件没有匹配项,则以 0 退出,因为未找到匹配项。
我试过这样做,但我最终得到的是匹配项,还有不匹配项。我真正需要的是匹配行,运行 作业,退出,如果文本文件没有匹配项,则 return 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.
$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"
}
$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 } }
}
大家好,
我在使用以下脚本时遇到问题。这是要求:
1) 每个文本文件都需要与单个 CSV 文件进行比较。 CSV 文件包含文本文件中应匹配的数据。
2) 如果文本文件中的数据匹配,则只输出匹配项和运行个职位等..
3) 如果文本文件与 CSV 文件没有匹配项,则以 0 退出,因为未找到匹配项。
我试过这样做,但我最终得到的是匹配项,还有不匹配项。我真正需要的是匹配行,运行 作业,退出,如果文本文件没有匹配项,则 return 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.
$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"
}
$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 } }
}