Compare-Object ничего не возвращает powershell - PullRequest
0 голосов
/ 26 ноября 2018

Итак, у меня есть два файла "file1.txt" и "file2.txt" со списками, например:

Файл 1 :
Помидор
Кетчуп
Горчица

Файл 2:
Помидор
Горчица
Соль

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

Compare-Object $(Get-Content file1.txt) $(Get-Content file2.txt)

, и он все еще показывал мне все строки, поэтому я выбрал свойство

Compare-Object $(Get-Content file1.txt) $(Get-Content file2.txt) -Property inputObject

И яполучил такой результат:

inputObject SideIndicator
----------- -------------
            <=           

Я застрял и в сети. Единственный результат, который я получаю при поиске в Интернете, - это люди, которые после добавления фильтра "-Property" все сделали правильно.

Спасибо зазаранее!

1 Ответ

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

Итак, у меня было две проблемы (спасибо @Olaf, @Lee_Dailey и @JosefZ за помощь!)

Первая проблема заключалась в том, что я получал данные из списков, составленных командами, поэтому это быломного пробелов и тому подобное, которые были решены с помощью следующего набора команд:

(gc file1.txt) | ? {$_.trim() -ne "" } | set-content file1.txt
(gc file2.txt) | ? {$_.trim() -ne "" } | set-content file2.txt

(gc file1.txt) | ? {$_.trim() -ne " " } | set-content file1.txt
(gc file2.txt) | ? {$_.trim() -ne " " } | set-content file2.txt

Затем мне нужно было сделать это (как предложено @JosefZ), чтобы получить правильный набор результатов:

(Compare-Object $(Get-Content file1.txt) $(Get-Content file2.txt)|Where-Object {$_.SideIndicator -eq '<='}).InputObject

Очень благодарен вам троим, я сам никогда не достиг бы ответа!

...