通过多次搜索在文件中进行搜索,并删除文件中的匹配项



我有一个包含单列IMEI的文本文件(file1.txt(。我有第二个包含单列IME的文件(file2.txt(。

我想做的是获取file2.txt中的每个IMEI,并在file1.txt中搜索所有匹配项,然后当它找到匹配项时,删除file1.xt中的那一行。

让它变得困难的是我需要同时执行多个搜索。每次执行每个操作需要相当长的时间,因为每个文件中有数百个IMEI。

有人对完成这项任务有什么建议吗?

脚本:

$orders = Get-Content c:file2.txt
foreach ($order in $orders) {
Get-Content file1.txt | Select-String -Pattern "$order" -NotMatch
}

上面的方法很有效,但因为我搜索了几百个"匹配",它每次都会返回"不匹配",所以它会返回数千个结果。

您可以在此处使用compare-object

$file1 = (1234,5678,9123)
$file2 = (1234)
$remove = Compare-Object $file1 $file2
$remove = $remove | Where{$_.SideIndicator -ne '=>'}
$file1 = $remove.inputobject

这将删除相等的内容,只返回第一个文件中的内容,删除所有类似IMEI的内容。然后,您可以使用Out-File导出它并覆盖以前的文件。

相关内容

  • 没有找到相关文章

最新更新