Re: [OT] RegEx
Hallo Amir,
On Thu, Jan 18, 2007 at 05:49:37PM +0000, Amir Tabatabaei wrote:
> Ich habe zwei Dateien:
>
> ---------- Datei A ----------
> 110703, a, b, c
> 110703, a, b, c
> 110703, a, b, c
> 110704, a, b, c
> 110705, a, b, c
> 110705, a, b, c
> 110706, a, b, c
> 110707, a, b, c
>
> ---------- Datei B ----------
> 110701, d, e, f, g, h
> 110704, d, e, f, g, h
> 110705, d, e, f, g, h
> 110708, d, e, f, g, h
>
> Die erste Spalte entspricht der Uhrzeit. Ich möchte die Uhrzeiten der
> beiden Dateien miteinander vergleichen und sie zusammenfassen.
[...]
> Die Ausgabe sollte also wie folgt aussehen:
>
> ---------- Ergebnis ----------
> 110701, 0, 0, 0, d, e, f, g, h
> 110703, a, b, c, 0, 0, 0, 0, 0
> 110703, a, b, c, 0, 0, 0, 0, 0
> 110703, a, b, c, 0, 0, 0, 0, 0
> 110704, a, b, c, d, e, f, g, h
> 110705, a, b, c, d, e, f, g, h
> 110705, a, b, c, 0, 0, 0, 0, 0
> 110706, a, b, c, 0, 0, 0, 0, 0
> 110707, a, b, c, 0, 0, 0, 0, 0
> 110708, 0, 0, 0, d, e, f, g, h
>
>
> Ich weiß es sind viele Anforderungen vorhanden. Ich bin auch für
> Teillösungen oder Tipps sehr dankbar.
'join' macht fast alles, was Du verlangst. Dein Beispiel kann man so
umsetzen:
$ join -t, -o 1.1,2.1,1.2,1.3,1.4,2.2,2.3,2.4,2.5,2.6 \
-a1 -a2 -e\ 0 datei_a datei_b | \
perl -pe 's/^\s*(\d+),\s*(\d+)/$1>=$2?$1:$2/e' > out
Beide Input-Dateien müssen vorsortiert sein und je nachdem, wofür [a-h]
tatsächlich stehen und wie groß die Dateien sind, brauchst Du einen
schnellen Rechner und/oder viel Zeit ;-)
Vielleicht hilfts ja als Anregung.
> Amir
Gruß,
f
--
Gravity is a myth, the Earth sucks.
Reply to:
- References:
- [OT] RegEx
- From: Amir Tabatabaei <amirovic@googlemail.com>