Dateien zusammenführen

Bash, Shell, PHP, Python, Perl, CGI
elfchen
Posts: 28
Joined: 2004-09-04 17:47

Dateien zusammenführen

Post by elfchen » 2005-08-28 21:50

Hallo! Wäre schön wenn mir jemand helfen könnte. Habe da zwei Textdateinen der Form:

datei1zeile1
datei1zeile2
datei1zeile3
datei1zeile4
...

und

datei2zeile1
datei2zeile2
datei2zeile3
datei2zeile4
...

und ich möchte diese jetzt zusammenführen.

Allerdings soll das nicht einfach angehängt werden, sondern ich will folgendes Ergebnis:

datei1zeile1
datei2zeile1
datei1zeile2
datei2zeile2
datei1zeile3
datei2zeile3
datei1zeile4
datei2zeile4
...

also immer eine Zeile von Datei1 und dann eine Zeile von Datei2.

Es sind einfache Textdateien.

Da die Dateien mehrere 100.000 Zeilen lang sind, sollte das ganze irgendwie auch schnell gehen.

Wäre ganz lieb wenn mir jemand helfen würde.

Danke!

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Dateien zusammenführen

Post by flo » 2005-08-28 22:02

1) ermitteln, welche Datei länger ist

Code: Select all

wc -l <file>
2) in Schleife gehen bis zur max. Zeilenzahl

Code: Select all

while [ $i < $LINES ]; do
...
i=`expr $i + 1`
done
3) Inhalte beachten, File kann kürzer sein

Code: Select all

if ! [ $LINE1 -gt MAXLINE1  ]; then
     head -3 $FILE1 | tail -1 >> $OUTPUTFILE
fi
flo.

elfchen
Posts: 28
Joined: 2004-09-04 17:47

Re: Dateien zusammenführen

Post by elfchen » 2005-08-28 22:30

Hi Danke für die schnelle Antwort ... allerdings:

> blogserver# wc -l template.php
> 30 template.php
> blogserver# wc -l blog.txt
> 1666894 template.php


geht ja noch; dann weiss ich das es 30 und 1666894 Zeilen sind ... aber wie nun weiter?

:oops:

djholliday
Posts: 26
Joined: 2004-11-23 16:18
Location: Nürnberg

Re: Dateien zusammenführen

Post by djholliday » 2005-08-29 06:44

Versuch doch mal

Code: Select all

awk  '{ if((getline line < f1) > 0){ print line } print $0} END { close(f1) } ' f1=<kurze Datei> <lange Datei> > <Ergebnis> 
Es ist vielleicht nicht das schnellste Script :oops: , aber das erste, was mir in den Sinn kommt.

Gruss,
DJ

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Dateien zusammenführen

Post by flo » 2005-08-29 09:22

Das geht ... o.k. awk ist für Textbearbeitung gemacht ... ich gebs ja zu ;-)

flo.

P.S.: Grüße ins Land, wo die Hasen Hosn und die Hosen Husn haßn :-)