2017-03-01 1 views
0

brauchen Hilfe mit Powershell und Bearbeiten von CSV-Dateien, da ich ein Neuling versuche zu lernen.Powershell zum Gruppieren von Elementen getrennt durch Kommas, da sie sich auf einen anderen Wert in der anderen Spalte beziehen

Ich habe eine CSV-Datei mit mehreren Spalten bekommt, denn jetzt URLs, um sie als A, B, C, D In der Spalte ‚A‘ Ich habe, Spalte ‚B‘ bezeichnen lasse Ich habe Gruppen, C und D sind für dieses Beispiel von Bedeutung.

so weit wie die Werte in den Zellen unter jeder Spalte, offensichtlich sind die Werte der URL an den Wert der unter Gruppe Spalte "B" gebunden.

Probe csv:

URL,Groups,x,y 
test1.org,TestGroup,xxx,yyy 
test2.org,TestGroup,xxx,yyy 
Test3.com,TestGroup,xxx,yyy 
Check.com,CheckGroup,xxx,yyy 
Random.1.com,RandomGroup,xxx,yyy 
random.22.org,RandomGroup,xxx,yyy 

Also, was ich versuche, diese zu tun ist, Gruppe in einer Weise, dass es wie folgt aussieht:

Groups,URL,x,y 
TestGroup,"test1.org,test2.org,test3.org",xxx,yyy 
CheckGroup,Check.com,xxx,yyy 
RandomGroup,"Random.1.com,random.22.org",xxx,yyy 

Ich habe versucht, die folgenden:

$Dir = "FileLocation\Data" 
$Data1 = import-csv $Dir\my.csv 

$Data = $Data1 | Select Groups, URL | Group-Object Groups 

$Data | export-cdv $Dir\result.csv 

Dies führt zu einer Tabelle, die für mich nicht funktioniert, wie es die Gruppierung in ein Array verwandelt.

Ich möchte in der Lage sein, unique nach Gruppe auf dem ursprünglichen csv zu sortieren und die Werte der URL der Gruppe zu importieren, wie sie in der gleichen Zelle durch Kommata getrennt beziehen.

Danke für die Hilfe.

Antwort

0

Sieht aus wie ein guter Fall für eine Hashtabellen-Magie, erstellen Sie eine Hashtabelle und fügen Sie sie an, indem Sie die Gruppenspalte als Schlüssel verwenden.

$data = import-csv 'path' 
$hashtable = @{} 
foreach ($item in $data) { $hashtable[$($item.Groups)] += "$($item.URL), " } 

Der einzige Nachteil ist, dass es am Ende jedes Schlüssels ein zusätzliches Komma gibt.

+0

'$ a' sollte' $ data' sein und '$ b' =' $ hashtable' oder umgekehrt? – LotPings

+0

Also ich nehme an, was Sie zur Verfügung gestellt haben, ist das Skript seiner eigenen und nicht ein Append zu dem, was ich hatte .... mit dem, wenn ich es ausführe ich bekomme eine Fehlermeldung für jede Gruppe sagen "Wert kann nicht konvertiert werden" TestGroup "zu schreiben "System.Int32". Fehler: "Eingabezeichenfolge war nicht im richtigen Format." Es zeigt dann die foreach Zeile, die das ($ item.URL) hervorhebt. Es wiederholt diesen Fehler für jede Gruppennamenszeile. – ace23

+0

Ich habe keine Idee, was Sie Ich habe deine csv Kopie in eine Datei eingefügt und das getan und es hat funktioniert. – 4c74356b41

Verwandte Themen