Code:
jan@jack:~/tmp/18x2> cat 18x2.awk
BEGIN {
old_fn = "";
max_no = 0;
}
{ if (FILENAME != old_fn) {
f_no = gensub(/.*[^0-9]([0-9]+)$/, "\\1", "g", FILENAME) * 1;
if (max_no < f_no) max_no = f_no;
}
sid[$2] = $2;
if (sidts[$2 "_" f_no] == "") sidts[$2 "_" f_no] = $1;
old_fn = FILENAME;
}
END {
for (id in sid) {
ln = id;
for (i = 1; i <= max_no; i++) ln = ln "," sidts[id "_" i];
print ln;
}
}
jan@jack:~/tmp/18x2> awk -f 18x2.awk file*
ID1,1228763779,,1228763783,1228763783,1228763787,,1228763791,,1228763795,,1228763799,,1228763803,,1228763807,,1228763811
ID2,1228763780,,1228763784,1228763784,1228763788,,1228763792,,1228763796,,1228763800,,1228763804,,1228763808,,1228763812
ID3,1228763781,,1228763785,1228763785,1228763789,,1228763793,,1228763797,,1228763801,,1228763805,,1228763809,,1228763813
ID4,1228763782,,1228763786,1228763786,1228763790,,1228763794,,1228763798,,1228763802,,1228763806,,1228763810,,1228763814
Die Dateien "file01" bis "file18" sind dabei mit Werten für ID1 .. 4 und Zeitstempeln gefüllt, die ungeraden haben Werte, die geraden bis auf 04 sind leer. Die Testdaten sind relativ einfach gestrickt, deshalb ist das Ganze auch nicht sonderlich gründlich getestet.
Lesezeichen