2008-08-24 3 views
2

Ich habe ein paar Dateien mit einem Wert in jeder Zeile.Kombinieren von Werten aus verschiedenen Dateien in einer CSV-Datei

EDIT:

ich auf diese Frage die Antwort herausgefunden, während in der Mitte den Postens des Schreibens und wusste nicht, dass ich es durch einen Fehler in seinem unvollständigen Zustand geschrieben hatte.

Ich habe versucht zu tun:

paste -d ',' file1 file2 file 3 file 4 > file5.csv 

und wurde einen seltsamen Ausgang bekommen. Später wurde mir klar, dass das passiert, weil einige Dateien am Zeilenende sowohl einen Wagenrücklauf als auch einen Zeilenumbruch hatten, während andere nur den Zeilenumbruch hatten. Ich musste immer daran denken, auf diese Dinge zu achten.

Antwort

2

Datei 1:

 
1 
2 
3 

file2:

 
2 
4 
6 
paste --delimiters=\; file1 file2 

nachgeben:

 
1;2 
3;4 
5;6 
0

Sie müssen wahrscheinlich Ihre Frage zu klären oder neu zu setzen, aber so wie es aussieht, ist die Antwort unten.

Verbinden von zwei Dateien unter Linux

cat filetwo >> fileone 
1

Ich habe das Gefühl, dass Sie Ihre Frage noch nicht abgeschlossen haben, aber ich gebe noch eine Chance. ;)

file1: file2: file3: 
1  a  A 
2  b  B 
3  c  C 

~$ paste file{1,2,3} |sed 's/^\|$/"/g; s/\t/","/g' 
"1","a","A" 
"2","b","B" 
"3","c","C" 

Oder

~$ paste --delimiter , file{1,2,3} 
1,a,A 
2,b,B 
3,c,C 
0

auch über die immer vielseitig LogParser vergessen Sie nicht, wenn Sie unter Windows sind.

Es kann SQL-ähnliche Abfragen gegen flache Textdateien ausführen, um alle Arten von Zusammenführungsoperationen durchzuführen.

0

Die vorherigen Antworten mit Logparser oder die Kommandozeilen-Tools sollten funktionieren. Wenn Sie die Datensätze komplizierter bearbeiten möchten, wie Filtern oder Joins, können Sie ein ETL-Tool (Pentaho, Mapforce und Talend) in Erwägung ziehen. Diese Werkzeuge bieten im Allgemeinen eine grafische Palette zum Definieren der Beziehungen zwischen Datenquellen und allen Operationen, die Sie in den Zeilen ausführen möchten.