2017-02-24 2 views
0
for i in `cut -d, -f 2 some_file.csv | uniq | tr -d "\""`; do grep -w $i some_file.csv > some_file_$i.csv; done 

Im Grunde laufe ich das jetzt auf meiner Linux-Workstation, aber ich muss dies an einen nichttechnischen Typ übergeben, der eine Windows-Workstation benutzt. Selbst ich bin kein Windows-Administrator, also keine Ahnung, wie man es im Windows-Skript ausführt. Jede Hilfe wird sehr geschätzt.Wie kann ich das folgende Bash-Skript in etwas konvertieren, das unter Windows einwandfrei läuft?

+1

Ich denke, Sie können es nicht einfach in "Windows Script" (Batch) konvertieren. Weil Windows Script/Batch eine völlig andere Syntax hat. – WasteD

+0

Sie können diesen Benutzer wahrscheinlich bitten, cygwin/msys und so weiter zu installieren. – wOxxOm

+0

Das sieht nach CSV-Parsing aus, was Powershell ziemlich gut unterstützt. Was genau soll das Skript tun? – vonPryz

Antwort

1

Power unterstützt CSV-Parsing ganz gut, versuchen, das Import-Csv cmdlet:

Import-Csv some_file.csv -Header 1,2 |Select-Object -ExpandProperty 2 |Sort-Object -Unique 

Import-Csv wird die Datei parsen und ein Objekt emittieren (pro Zeile) mit zwei Eigenschaften: 1 und 2, entsprechend dem ersten und zweite Spalte in der Datei.

Die Select-Object Anweisung wird die Werte aus der 2 Eigenschaft ergreifen und den Rest wegwerfen.

Sort-Object -Unique werden die Spaltenwerte sortieren und Duplikate

1

In Powershell entfernen Sie die CSV geteilt würden die Datensätze durch die Identifizierungsfeld durch die Gruppierung und jede Gruppe exportieren getrennt:

$csv = 'C:\path\to\some.csv' 
$field = 'fieldname' 

Import-Csv $csv | Group-Object $field | ForEach-Object { 
    $name = $_.Name 
    $_.Group | Export-Csv "C:\path\to\output_$name.csv" -NoType 
} 

Hinweis, die Sie benötigen Den Namen des Feldes dafür kennen. Wenn Sie das zweite Feld unabhängig von seinem Namen aufteilen möchten (was ich nicht empfehlen kann), müssen Sie zuerst den Namen dieses Feldes bestimmen. Ich überlasse das als Übung für den Leser.

Verwandte Themen