我有一个包含单列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
导出它并覆盖以前的文件。