Поиск в файле с несколькими поисками и удаление совпадений в файле - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть текстовый файл, содержащий один столбец IMEI (file1.txt). У меня есть второй файл, содержащий один столбец IMEI (file2.txt).

То, что я пытаюсь сделать, это взять каждый IMEI в file2.txt и выполнить поиск в file1.txt, чтобы найти все совпадения, а затем, когда он найдет совпадение, удалить эту строку в file1.txt.

Что затрудняет, так это несколько запросов, которые мне нужно выполнить одновременно. Выполнение каждого из них может занять довольно много времени, поскольку в каждом файле есть сотни IMEI.

У кого-нибудь есть предложения по выполнению этой задачи?

Сценарий:

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

Вышеописанное работает, но, поскольку я ищу пару сотен «совпадений», он каждый раз возвращает «не совпадения», поэтому он возвращает тысячи результатов.

1 Ответ

0 голосов
/ 06 ноября 2018

Вы можете использовать compare-object здесь.

$file1 = (1234,5678,9123)
$file2 = (1234)

$remove = Compare-Object $file1 $file2
$remove = $remove | Where{$_.SideIndicator -ne '=>'}
$file1 = $remove.inputobject

Это удалит то, что равно, и вернет только то, что находится в первом файле, удалив все как IMEI. Затем вы можете просто экспортировать его с помощью Out-File и перезаписать предыдущий файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...