powershell - 将文本文件中的 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"
}
解决方案
只是改变了一点(未测试),使用$_
而不是匹配作为您想要的 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 } }
推荐阅读
- java - 如何从参数化构造函数中获取数据?
- python - 尝试抓取任何地方或餐厅的谷歌首页地址但不走运
- wpf - 根据屏幕分辨率自动调整 Windows 应用程序屏幕大小
- c# - 为什么我的 do-while 循环中的 continue 关键字不起作用?
- spring - 将缺少的 URI 变量映射到请求映射
- python - 哪个是再训练 YOLO 神经网络的可取策略?
- python-3.x - django.core.exceptions.ImproperlyConfigured:应用程序标签不是唯一的,重复:帐户
- maven - 如何在构建期间要求 IntelliJ 强制下载 maven 依赖项?
- azure - 无法在 SSDT Visual Studio 2017 中导入 SSIS 包
- redis - Redis 集群在主从之间执行频繁故障转移