Сравнить объект Powershell - PullRequest
       9

Сравнить объект Powershell

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

Я хочу сравнить два объекта и получить только разные значения.У меня есть этот код:

$a = ("this is blah blah DOG")
$b = ("Dit is blah BLAH dog")
Compare-Object -ReferenceObject $a -DifferenceObject $b

с кодом выше, я получаю следующий вывод:

InputObject           SideIndicator
-----------           -------------
Dit is blah BLAH dog  =>           
this is blah blah DOG <=    

Однако я хочу только разные значения в обоих объектах, то есть Dit и это

Ответы [ 3 ]

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

Для этого конкретного примера:

$a = ("this is blah blah DOG").Split(" ")
$b = ("Dit is blah BLAH dog").Split(" ")
Compare-Object -ReferenceObject $a -DifferenceObject $b
0 голосов
/ 24 ноября 2018

Вы не показываете, как выглядит ваш CSV-файл, так что есть, но шаг за шагом, что вы ищете.

($a = Get-Content -Path 'D:\Documents\file1.txt')
($b = Get-Content -Path 'D:\Documents\file2.txt')
Compare-Object -ReferenceObject $a -DifferenceObject $b

<#
What's in the two files

file1
hello
world



file2
hello
world



InputObject SideIndicator
----------- -------------
file2       =>           
file1       <=           
#>




($a = Get-Content -Path 'D:\Documents\file1.csv')
($b = Get-Content -Path 'D:\Documents\file2.csv')
Compare-Object -ReferenceObject $a -DifferenceObject $b

<#
What's in the two files

Col1,Col2,Col3
file1,hello,world



Col1,Col2,Col3
file2,hello,world



InputObject       SideIndicator
-----------       -------------
file2,hello,world =>           
file1,hello,world <=           
#>



($a = (Get-Content -Path 'D:\Documents\file1.csv' | Select -Skip 1) -split ',')
($b = (Get-Content -Path 'D:\Documents\file2.csv' | Select -Skip 1) -split ',')
Compare-Object -ReferenceObject $a -DifferenceObject $b

<#
file1
hello
world



file2
hello
world




InputObject SideIndicator
----------- -------------
file2       =>           
file1       <=  
#>

Наконец, это также звучит до жути вот так Q & A

Сравните два списка в Powershell

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

Compare-Object работает на весь объект и его свойства.Это не будет выполнять ленивое сопоставление строк.Если вы хотите, чтобы вам сначала нужно было разбить строку на массивы

$a = "this is blah blah DOG".Split()
$b = "Dit is blah BLAH dog".Split()
Compare-Object -ReferenceObject $a -DifferenceObject $b

Остерегайтесь потенциальных проблем с учетом регистра и используйте -CaseSensitive при необходимости.

...