首页 > 解决方案 > 将文本文件中的 IP 与 html 文件进行比较

问题描述

我有一个包含许多 IP 的文本文件,我想将它与 html 文件进行比较。

我在 Powershell 中有一些脚本,但输出不包含确切的 IP,而是从最后一个八位字节开始的 IP。

$file1 = Get-Content H:\Downloads\hnames.txt
$file2 = Get-Content H:\Downloads\cpdb2web_B976151009_1\Outputs\test.html

$result = "H:\Downloads\names.txt"

$file1 | foreach {
    $match = $file2 -match $_
    if ( $match ) {
        $match | Out-File -Force $result -Append
    }
}

hnames.txt(示例文本文件)

10.66.94.16

输出.txt

<a href="#network_object_Net_10.66.94.16_n28">Net_10.66.94.16_n28</a>
<a href="#network_object_Net_10.66.94.16_n28">Net_10.66.94.16_n28</a>
<td vAlign="top"><a name="network_object_Net_10.66.94.16_n28">Net_10.66.94.16_n28</a></td><td vAlign="top">
    </td><td vAlign="top">10.66.94.16<br>
    </td><td vAlign="top">10.66.94.168<br>
    </td><td vAlign="top">10.66.94.162<br>
    </td><td vAlign="top">10.66.94.164<br>

我尝试了另一个脚本,但它也不起作用,

$File1 = Get-Content H:\Downloads\hnames.txt
$File2 = Get-Content H:\Downloads\cpdb2web_B976151009_1\Outputs\test.html

$RegEx = "("
ForEach ($Line in $File1){
    $RegEx += "$Line|"
}

$RegEx = [regex]"$($RegEx.SubString(0,($RegEx.Length - 1))))"   #trim the last | out, we don't need it

$Search = $File2 | Select-String -Pattern $RegEx -AllMatches

ForEach($Match in $Search.Matches){
    Write-Output "$($Match.Value) was found in firewall"
}

标签: powershell

解决方案


只是改变了一点(未测试),使用$_而不是匹配作为您想要的 IPAddress。

$file1 = 获取内容 H:\Downloads\hnames.txt
$file2 = 获取内容 H:\Downloads\cpdb2web_B976151009_1\Outputs\test.html

$result = "H:\Downloads\names.txt"

$文件1 | Foreach-对象-进程{
    $match = $file2 -match $_
    如果($匹配){
        $matches[0] | 输出文件 -Force $result -Append
    }
}

推荐阅读