我有一个文本文件,其中包含一列IMEI(file1.txt)。我还有第二个文件,其中包含一列IMEI(file2.txt)。
我想做的是获取file2.txt中的每个IMEI,并搜索file1.txt以查找任何匹配项,然后在找到匹配项时,删除file1.txt中的该行。
让我一次执行多个搜索变得很困难。一次执行每个操作都需要花费相当长的时间,因为每个文件中都有数百个IMEI。
有人对完成这项任务有什么建议吗?
脚本:
$orders = Get-Content c:\file2.txt
foreach ($order in $orders) {
Get-Content file1.txt | Select-String -Pattern "$order" -NotMatch
}
以上方法有效,但是由于我要搜索数百个“匹配项”,因此每次都会返回“不匹配项”,因此它返回数千个结果。
答案 0 :(得分:1)
您可以在此处使用compare-object
。
$file1 = (1234,5678,9123)
$file2 = (1234)
$remove = Compare-Object $file1 $file2
$remove = $remove | Where{$_.SideIndicator -ne '=>'}
$file1 = $remove.inputobject
这将删除相等的内容,只返回第一个文件中的内容,同时删除所有类似IMEI的内容。然后,您可以使用Out-File
导出它并覆盖以前的文件。