Ja, dein Problem ist auch relativ speziell
Außerdem beschreibst du nur einen Ausschnitt. Welches Verhalten sollte das Programm den überhaupt haben?
Erste Datei: vollständiger Text
Zweite Datei: Zeilen mit Wörtern
Ergebnis:
alle Zeilen aus der ersten Datei, in denen jeweil ein Wort aus der zweiten Datei vorkommt?
Wie soll die Suche denn von statten gehen?
1. Ein Wort aus der zweiten Datei nehmen
2. die Zeile in der ersten Datei suchen, in der das Wort vorkommt,
3. diese Zeile ins Ergebnis packen, mit dem nächsten Wort aus der zweiten Datei fortfahren ?
3.1: Soll in der zweiten Datei erst ab der Zeile, wo das vorherige Wort vorkam, fortgefahren werden?
3.2: Was soll passieren, wenn ein Wort nicht vorkommt?
Was soll z.B mit Leerzeilen in der zweiten (oder ersten Datei) passieren?
Oder falls z.B die erste Datei so ausschaut:
Hello world
ich bin
ein Satz
und die zweite:
soll das Ergebniss nun so auschauen:
oder eher so:
Hello world
ich bin
ein Satz
?
Falls du zu dem zweiten Fall tendierst:
hier gibt es wieder weitere Fallen:
ich bin eine Zeile
und ich bin die zweite
und überhaupt
mit
sollte es dann
ich bin eine Zeile
und ich bin die Zweite
und überhaupt
ergeben? Oder doch nur ein Ergebnis:
ich bin eine Zeile
und überhaupt
Und wie groß sind die Textdateien eigentlich? (also grob: paar MB oder doch im Gigabytebereich? )
Fragen über Fragen
Aber wenn du es genauer spezifiziert hättest, hätte auch bestimmt schon jemand
ein kleines Script liefern können
Edit: wie zum Beispiel dieses hier:
Code:
import sys
def file_to_lines(name):
with open(name, 'r') as f:
result = f.read()
return result.splitlines()
def main():
try:
text = file_to_lines(sys.argv[1])
words = file_to_lines(sys.argv[2])
result = [line for word in words
for line in text
if word in line.split()]
with open(sys.argv[3],'w') as f:
f.write('\n'.join(result))
except IOError:
print "Aufruf:\n",\
"filediff.py original.txt words.txt result.txt\n"
main()
ist Python (und erfordert Python 2.6 zum Ausführen )
einfach den code als "filediff.py" abspeichern und dann mit
filediff.py original.txt words.txt result.txt
aufrufen (original.txt = der vollständige Text, words.txt = eben die Wörter pro Zeile, result.txt = Datei, in der das Ergebis abgespeichert werden soll).
Beispiel:
Code:
C:\>more text.txt
Hans spielt
gerne mit seinem
Nachbarn Karl
der Nebenan wohnt.
C:\>more words.txt
spielt
Nachbarn
der
C:\>filediff.py text.txt words.txt result.txt
C:\>more result.txt
Hans spielt
Nachbarn Karl
der Nebenan wohnt.