基于CSV中的值匹配文本文件中的行 [英] Matching Lines in a text file based on values in CSV

查看:22
本文介绍了基于CSV中的值匹配文本文件中的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好

我在使用以下脚本时遇到了问题。以下是要求:

1)每个文本文件需要与单个CSV文件进行比较。CSV文件包含的数据如果存在于文本文件中,则应与之匹配。

2)如果文本文件中的数据匹配,则仅输出匹配项并运行作业等。

3)如果文本文件与CSV文件没有匹配项,则退出时返回0,因为找不到匹配项。

我曾尝试这样做,但最终得到的结果是匹配,也有不匹配。我真正需要的是匹配行、运行作业、退出,如果文本文件没有匹配,则返回0

$CSVFIL = Import-Csv -Path $DRIVE	estcsvfile.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"

推荐答案

我会以不同的方式处理此问题。首先需要查找匹配项,如果有匹配项,则处理Else输出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"
}

这篇关于基于CSV中的值匹配文本文件中的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆