首页 > 解决方案 > 查找文件和输出

问题描述

源文件如下所示:

发货前;1234567
交付后;7654321

查找文件:

1234567;一
7654321;乙

输出应该是:

交货前;A
交货后;B

标签: powershelllookup

解决方案


10分钟搞定..

没有很好优化的解决方案

  • 它为查找文件中找到的每一行读取整个文件
#https://stackoverflow.com/questions/54087831/lookup-on-file-and-output
#inspired by https://stackoverflow.com/questions/33511772/read-file-line-by-line-in-powershell 

<#
source file 
    Pre-delivery;1234567
    Post-delivery;7654321

lookup file
    1234567;A
    7654321;B

result
    Pre-delivery;A
    Post-delivery;B
#>

$sourceFile=".\foosource.txt"
$lookup=".\foolookup.txt"

# read lookup file line by line
foreach($lineLookup in Get-Content $lookup) {

    #read source data file line per line
    foreach($line in Get-Content $sourceFile) {
    #prepare variables
     $splitLookup=$lineLookup.Split(";")
     $splitSource=$line.Split(";")

     #if equals
     if($splitLookup[0] -eq $splitSource[1]){
        #print in the given format
        $result = $splitSource[0].Trim()+";"+$splitLookup[1].Trim()
        Write-Host $result
     }

    }

}

推荐阅读