joes1609
Goto Top

Vergleich Array mit Multiarray

Hallo,

habe da mal ein Problem.
Ich will werte aus einem Array mit Werten aus einem Mult-array vergleichen.

Wenn ich zwei Arrays vergleiche, bekomme ich das korrekte Ergebnis:
$a1=@(3,11,25,31,37,19)
$b1=@(8,15,16,20,37,31)
$c1 = $a1 | Where {$b1 -Contains $_}
$ofs = ', '  
"Enthalten sind $c1  
"  

Enthalten sind 31, 37

Nun soll aber $a1 ein Multiarray sein und für jeden Eintag verglichen werden.

$a1=@((3,11,25,31,37,19),(9,10,12,16,23,27))
$b1=@(8,15,16,20,37,31)
$c1 = $a1 | Where {$b1 -Contains $_}
$ofs = ', '  
"Enthalten sind $c1  

Da sollte folgenes bei herauskommen:
Enthalten sind 31, 37
Enthalten sind 16

Da kommt aber kein Ergebnis bei heraus.
Muss bestimmt mit foreach gelöst werden, weiß aber nicht wie.

Danke im Voraus.

Gruß Jörg

Content-Key: 384546

Url: https://administrator.de/contentid/384546

Printed on: April 20, 2024 at 03:04 o'clock

Member: colinardo
colinardo Aug 26, 2018 updated at 11:14:32 (UTC)
Goto Top
Servus Joerg,
Muss bestimmt mit foreach gelöst werden, weiß aber nicht wie.
Jepp
$a1=@((3,11,25,31,37,19),(9,10,12,16,23,27))
$b1=@(8,15,16,20,37,31)

$a1 | %{
    "Enthalten sind: $(($_ | ?{$_ -in $b1}) -join ',')"  
}
Grüße Uwe
Member: joes1609
joes1609 Aug 26, 2018 at 11:25:37 (UTC)
Goto Top
Vielen Dank
Member: joes1609
joes1609 Aug 26, 2018 at 12:13:46 (UTC)
Goto Top
Und wie sieht es aus, wenn ich die Daten aus einer Textdatei einlese will ?

c:\temp\test.txt
3,11,25,31,37,19
9,10,12,16,23,27

$a1=@(Get-content c:\temp\test.txt -Delimiter ',')
$b1=@(8,15,16,20,37,31)

$a1 | %{
"Enthalten sind: $(($_ | ?{$_ -in $b1}) -join ',')"
}

Gibt folgendes Ergebnis

Enthalten sind:
Enthalten sind:
Enthalten sind:
Enthalten sind: 31,
Enthalten sind: 37,
Enthalten sind:
Enthalten sind:
Enthalten sind:
Enthalten sind: 16,
Enthalten sind:
Enthalten sind:
Member: colinardo
colinardo Aug 26, 2018 updated at 15:15:57 (UTC)
Goto Top
Und wie sieht es aus, wenn ich die Daten aus einer Textdatei einlese will ?
Ähnlich nur das du eben für jede Zeile der Datei die gespliteten Strings erst von einem String in eine Zahl wandeln musst, du kannst ja nicht Birnen mit Bananen vergleichen face-wink: Im Beispiel wird sie jeweils nur im where-object für den Vergleich in eine Zahl gewandelt sie kommt ja eh nur als Ausgabe in einen String also kann sie es auch bleiben.
$b1=@(8,15,50,20,37,31)
gc 'C:\temp\test.txt' | %{  
    "Enthalten sind: $(($_.split(',') | ?{[decimal]$_ -in $b1}) -join ',')"  
}

p.s.
Bitte nutze in Zukunft Code-Tags für deinen Quellcode: <code> Quellcode </code>. Merci.
Member: joes1609
joes1609 Aug 26, 2018 at 15:37:27 (UTC)
Goto Top
Dankeschön, passt.
Werde mich an Code-Tags halten.