Сравните два текстовых файла с дубликатами и запишите отчетливые различия в текстовый файл

Я хочу сравнить 2 текстовых файла и вывести разницу в другом текстовом файле.

compare-object (get-content c:\temp\hostname_old.txt) (get-content c:\temp\hostname_new.txt) | Select-Object -ExpandProperty InputObject | Out-File $Location

hostname_old.txt

server02
server05
server04
server06
server01

hostname_new.txt (имеет повторяющиеся имена)

server04
server01
server02
server04
server02

Результат:

server04
server02
server05
server06

Обратите внимание, как server04 а также server02 присутствуют в этом списке различий, даже если они присутствуют в обоих входных файлах.

Это то, что я хочу:

server05
server06

1 ответ

Решение

Использование Select-Object -Unique удалить дубликаты перед сравнением:

compare-object -PassThru `
  (get-content c:\temp\hostname_old.txt) `
  (get-content c:\temp\hostname_new.txt | Select-Object -Unique)

Как и в этом ответе на ваш предыдущий вопрос, -PassThru используется для прямого разграничения линий, без [pscustomobject] обертки (которые указывают исходный набор различий через их .SideIndicator собственность) что Compare-Object выводит по умолчанию.

Другие вопросы по тегам