2 Dateien Verlgeichen, Gemeinsamkeiten Exportieren

B

bloch-m

Jungspund
Einen wunderschönen Tag wünsche ich euch... :-).

nachdem ich nach 9 std. dauer googlen und jegliches rumprobieren keine lust mehr habe. Habe ich beschlossen euch an meinem jetzigen und größten Problem teil haben zu lassen.

Und zwar versuche ich vergeblich 2 Dateien miteinander zu vergleichen wo in beiden quasi das selbe drinne steht.
In Datei 1 Steht z.b. folgendes Drin:

Hallo ich bin ein Test Text

und in Datei 2 steht dann folgendes drinn

Antwort: Hallo ich bin ein Test Text

Nun hät ich gern das Datei 1 mit Datei 2 verglichen werden und die Zeile in der die Gemeinsamkeiten auftreten soll herausgelöscht werden aus beiden Dateien und in einer 3. Datei hineingeschrieben werden.

Der Text der in einer Zeile von Datei 1 drin ist ist immer gleich dem Text der in einer Zeile von Datei 2 drin ist bis auf das vor dem test z.B. Antwort: steht.

Ich habs schon mit diff ausprobiert aber da zeigt der ja die sachen an die ungemeinsam sind ^^... und der will net checken das in der Zeile "Hallo ich bin ein Test Text" das selbe drinn steht wie in der Zeile "Antwort: Hallo ich bin ein Test Text" und mit Sed habe ich auch keine Lösung gefunden Oo . Mir käme zwar Cut im sinn aber glaube das das eher nicht hilft

Hat denn jemand von euch eine Idee dazu???????

Ich bedanke mich nochmal ganz ganz doll bei euch
und ps versuche das auf einem Fedora8 System ;)
 
Moin, moin!

Leider hab ich nicht genau verstanden was dein entgültiges Ziel ist. Du willst, dass der Inhalt bzw. der Text nur noch in einer Datei vorkommt? Wenn das der Fall ist geht es doch eigentlich nur noch darum, Duplikate zu identifizieren und zu löschen? Um wie viele Dateien handelt es sich denn?

Ohne genaueres zu wissen, würde ich trotzdem mal vorschlagen, ein Skript zu basteln, dass eine Datei einliest, "Antwort :" vor den String klatscht und schaut ob der Inhalt einer anderen Datei mit diesem String übereinstimmt, wenn ja, dann wird die Datei gelöscht ... oder der String, ohne "Antwort :" in eine neue Datei geschrieben.

siehe auch http://xkcd.com/208/

mach dieses Skript schön gesprächig, so dass du nachvollziehen kannst, ob es das macht, was du dir vorgestellt hast ...
 
Zuletzt bearbeitet:
Öhm GNU Bash :-)

sorrz


@ralze hmmm auf die Idee kam ich ja noch nicht vor der Zeile dann ein Antwort: hin zu ballern ... danke für den guten Ansatz :-)... allerdings dürfte es schwer sein weil nicht immer Antwort: vor dem eigentlichen Text steht.
 
Zuletzt bearbeitet:
Hallo
Da bleiben schon noch ein paar Fragen offen.
Z.B. ob es um die Reihenfolge geht, oder nicht, ob Zeilen doppelt vorkommen können oder nicht.

Dieser Perleinzeiler findet alle Zeilen, die in beiden Dateien vorkommen und gibt das Ergebnis in Datei3 aus, wobei hier die Reihenfolge egal ist.
Code:
perl -ne '(($h{$_}.= @ARGV) =~ /10$/) ? print : 1' Datei1 Datei2 >Datei3

Wolfgang
 
DIe Zeilen werde vorher mit sort bei beiden Dateien geordnet so sollte theoretisch zumindest in beiden Dateien in der selben Zeile "Hallo ich bin ein Test Text" "Antwort: Hallo ich bin ein Test Text" stehen

Joa kann passieren ist aber sehr unwarscheinlich das dies passieren wird ... also gehen wir mal vom unwarsheinlichen fall aus :-D

achso *lol* Mega riesen Dank an euch alle :-)... auch wenn ich ne fehlermeldung bekomme zu deinem kleinen Einzeiler Wolfgang "Syntax error at -e line 1, @EOF
Execution of -e aborted due to compilation errors."

aber dennoch mega dank :-)
 
Zuletzt bearbeitet:
Funktioniert hier wunderbar:
Code:
$ for i in {1..50}; do echo $i ;done >tmp1

$ for i in {40..60}; do echo $i ;done >tmp2

$ perl -ne '(($h{$_}.= @ARGV) =~ /10$/) ? print : 1' tmp1 tmp2
40
41
42
43
44
45
46
47
48
49
50
 
hmm jap so funktionierts auch wenigstens ein guter ansatz hehe Danke :-)...
muss nur noch irgendwie dazu bringen das es zu der ganzen sache passt... vorher werden nämlich mehrere Dateien durchsucht wo nach einem bestimmten Wort sucht und wenn er das Wort in einer Datei gefunden hat sucht der in der Datei nach einem 2. Wort und schreibt die Zeile wo das 2. Wort steht in Datei1 rein(z.b. Betreff: Hallo ich bin ein Test Text) und das selbe wird in einem anderen Ordner gemacht wo er es dann in Datei 2 reinschreibt (z.b. Betreff: Bestätigung: Hallo ich bin ein Test Text)
Danach werden beide Dateien mit sort Sortier und zu guter letzt wird mit sed bei beiden Dateien das Wort "Betreff: " gelöscht.

Danach soll er die beiden Dateien vergleichen und gemeinsamkeiten rauschneiden und in einer 3. Datei reinschreiben.
Da ich das ganze bisher mit shell skript geschafft habe hatte ich gedacht es gäbe auch ein einzelnes command dafür.:-)


Hmmm ich habe jetzt mal einen anderen weg eingeschlagen einfacher aber nicht so dolle egal :-)

Und nochmals Danke fuer eure Hilfe :-)
 
Zuletzt bearbeitet:
Warum nicht einfach mit grep?

Code:
$ cat bla
Antwort: Hallo ich bin ein Test Text
bla
$ cat blub
Hihi
Hallo ich bin ein Test Text
$ grep -Ff blub bla
Antwort: Hallo ich bin ein Test Text
Das würde dir die "gleichen" Zeilen geben, wobei das jetzt natürlich immer mit dem "Antwort-Prefix" versehen ist, welches du zum Beispiel mit "-o" "wegschneiden" könntest:
Code:
$ grep -oFf blub bla
Hallo ich bin ein Test Text
Die Zeilen aus den "Ursprungsdateien" herausschneiden sollte eigentlich auch kein großes Thema mehr sein.. Oder hab ich wieder was gravierend falsch verstanden?
 
Hehe Supi danke :-) bin da aber mitlerweile selbst drauf gekommen :-D... hab das jetzt so gemacht das ich mit sed z.b. Antwort: auschneiden lasse ... und mit comm lasse ich die 2 Dateien dann vergleichen und in einer 3. Datei schreibt der die Gemeinsamkeiten dann rein... muss nur noch hinbekommen das die gemeinsamkeiten dann aus den 2 Dateien raus löscht hmmm
 
Zuletzt bearbeitet:

Ähnliche Themen

Mit AWK verschiedene Felder verschiedener Zeilen vergleichen

Keine grafische Oberfläche (Debian Installation)

[Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

Centos und Apache (VirtualHost)

ca. 1200 PDF-Dateien auslesen und bestimmte Daten in eine CSV-Datei speichern

Zurück
Oben