[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: