Ich suche Tabellen mit 2 oder mehr Dateien des Formats zu machen:Normalizate Dateien mit beitreten
05/2003 3
06/2003 2
07/2003 1
09/2003 2
10/2003 2
11/2003 2
12/2003 1
01/2004 2
02/2004 1
04/2004 2
und
01/2003 2
02/2003 2
07/2003 1
08/2003 1
09/2003 1
01/2004 2
06/2004 1
09/2004 2
10/2004 1
02/2005 3
ich die Zeile benötigen, die in einer Datei sind aber nicht in der andere, die mit 0 in das Feld der Datei eingefügt wird, die nicht die Zeile enthält (es können mehr als 2 Dateien erstellt werden). Das "Join" -Programm tut dies nicht. Wenn ich die Option "-a" verwende, werden alle Zeilen gedruckt, aber die Spaltennummer bleibt erhalten. Die Option "-e" hilft auch nicht. Die Ausgabe sollte in diesem Format sein:
01/2003 0 2
02/2003 0 2
05/2003 3 0
06/2003 0 2
07/2003 1 1
08/2003 0 1
09/2003 2 1
10/2003 2 0
11/2003 2 0
12/2003 1 0
01/2004 2 2
02/2004 1 0
04/2004 2 0
06/2004 0 1
09/2004 0 2
10/2004 0 1
02/2005 0 3
Seit jetzt, danke!
Bonus: Wenn ich in Zukunft die Quelle des "Join" -Befehls modifiziere, um dies zu tun, könnte es kanonisiert werden?
Dies sieht aus wie ein Problem besser geeignet für SQL "innere Verbindung", aber eine einfache, so kann mit Awk oder Bash möglich sein. –
Sie können drei disjunkte Mengen verketten (nur Datei1, Datei1 und Datei2, nur Datei3), die durch 'Join' mit einer Textbearbeitung erzeugt werden können, um die fehlenden Werte hinzuzufügen, aber ich sehe keine triviale Lösung. Besser zur vollen Leistung von 'awk' zurückkehren. – karakfa