Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Applikationen Probleme mit Anwendungsprogrammen aller Art gehören hier hin.

Entfernen von doppelten "zeilen" in Textdatein

Diskussion: Entfernen von doppelten "zeilen" in Textdatein im Forum Applikationen, in der Kategorie Software Home; Anzeige Moin moin, ich versuche mein Problem das kurz und bündig zu erklären...: IST Zustand: es sind um die 100 ...

Antwort
Alt 07.02.06, 15:08   #1 (permalink)
 
Registriert seit: 17.01.06
Oi!Alex Leistung: 8086
Likes: 7
Standard Entfernen von doppelten "zeilen" in Textdatein

Anzeige

Moin moin,
ich versuche mein Problem das kurz und bündig zu erklären...:

IST Zustand:
es sind um die 100 Textdatein, in jeder Textdatei sind zwischen 100 und 2000 Zeilen mit einem Wort (nein keine wordlist ;) )

SOLL Zustand:
eine Textdatei die aus allen Textdatein gebildet wurde und keine doppelten Einträge enthält.


Meine Frage ist es, gibt es schon etwas fertiges, was mir die Aufgabe abnimmt? oder komm ich nicht drumherum das selbst zu Programmieren, und wenn ja wie würdet ihr das machen vom Programmablauf her?

gruss

Oi!Alex ist offline   Mit Zitat antworten
Alt 07.02.06, 15:31   #2 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Jede Textdatei Zeile für Zeile durchgehen.
Schauen ob Zeile schon da ist ( am besten einen vektor o.ä. zum speichern nehmen)
wenn nein: zeile /wort hinzufügen.
wenn ja: weiter mit nächster zeile.
Danach Inhalt des Vektors/ der Liste/wasauchimmer Element für Element in Datei schreiben.
Lesco ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 07.02.06, 19:26   #3 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 200
Standard

Programmieren: Baumstruktur mit dem Text als "Key" - ok, relativ "Zeitaufwändig" aber was solls - solange es keine GB an Daten sind. Z.B in Java lassen sich Bäume einfach realisieren (oder sind gar schon vorhanden - k.A - musste ich selber umsetzen) ) und dann braucht man eben nur noch die Vergleichsroutine für Strings zu "schreiben" (auch in den meisten Programmiersprachen drin). Jetzt geht man einfach hin und erstellt einen Baum, den füllt man in einer Schleife mit allen Textzeilen. Falls die Zeile schon vorhanden ist (also gleich), wird sie einfach nicht mehr mitgespeichert. dann Speichert man den Baum in die Textdatei ab - wenn man dabei Inorder hat man die schon gleich sortiert abgespeichert.

also in etwa:
Code:
erstelle baum

while Ordner nicht leer do
    öffne Datei
     while Datei nicht leer do
          Baum.Hinzufügen(lese_zeile);
      od
od
Speichere_baum_als_text;

Hinzufügen:
  *wie bei normalen Bäumen eben*
  *nur dass man die Vergleichsfunktion anpasst*
http://www.faqts.com/knowledge_base/.../26106/fid/165
http://www.bearcave.com/software/jav...inaryTree.html

Liste als Datenstruktur müsste auch gehen - ist wahrscheinlich nicht mal viel unperfomanter (in der Praxis) und einfacher zu handhaben.
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 08.02.06, 13:00   #4 (permalink)
Member of Honour
 
Benutzerbild von ivegotmail
 
Registriert seit: 28.05.03
ivegotmail Leistung: Z3
Likes: 1
Standard

am einfachsten gehts wenn du ne collections klasse benutzt, die keine doppelten einträge erlaubt. so kannst du dir die eigenen vergleichsoperationen für doppelte einträge sparen. brauchst also nur alles in diese liste hinzufügen und kannst den inhalt danach direkt wieder in ne datei schreiben.

bei java gibt es dafür die klasse java.util.Set
__________________
http://livehabo.hackerboard.de | http://livebb.sourceforge.net
ivegotmail ist offline   Mit Zitat antworten
Alt 08.02.06, 18:09   #5 (permalink)
 
Registriert seit: 02.12.05
schmidtl_dd Leistung: Facit NTK
Likes: 0
Standard

Doch nich immer gleich mit anonen auf Spatzen schießen

Einfach an ner Linux shell Dateien aneinanderhängen:

cat datei1 >> datei2

Und dann mit uniq doppelte Zeilen entfernen.

uniq quelle ziel

Is ne schöne Übung zur shellprogrammierung :o)
schmidtl_dd ist offline   Mit Zitat antworten
Alt 08.02.06, 18:25   #6 (permalink)
Member of Honour
 
Registriert seit: 29.01.05
NeonZero Leistung: Facit NTK
Likes: 0
Standard

sort -u *.txt > neu.txt

Bye, nz
NeonZero ist offline   Mit Zitat antworten
Alt 08.02.06, 18:31   #7 (permalink)
 
Registriert seit: 02.12.05
schmidtl_dd Leistung: Facit NTK
Likes: 0
Standard

Hey... von sortieren war nich die rede ^^
schmidtl_dd ist offline   Mit Zitat antworten
Alt 08.02.06, 18:47   #8 (permalink)
Senior Member
 
Benutzerbild von odigo
 
Registriert seit: 25.12.04
odigo Leistung: 8086odigo Leistung: 8086
odigo eine Nachricht über ICQ schicken
Likes: 54
Standard

@schmidtl_dd: du solltest aber vorher sortieren wenn du uniq verwendest, denn:

Zitat:
Lösche alle hintereinanderstehenden identischen Zeilen von EINGABE
(oder Standardeingabe) bis auf eine, und schreibe auf AUSGABE (oder
Standardausgabe).
auf das "hintereinanderstehende" kommt es an.
Oder täusche ich mich da jetzt ?(

odigo
odigo ist gerade online   Mit Zitat antworten
Alt 09.02.06, 08:38   #9 (permalink)
Themenstarter
 
Registriert seit: 17.01.06
Oi!Alex Leistung: 8086
Likes: 7
Standard

ich habe mcih für die lösung von ivegotmail entschieden:

Zitat:
Original von ivegotmail
am einfachsten gehts wenn du ne collections klasse benutzt, die keine doppelten einträge erlaubt. so kannst du dir die eigenen vergleichsoperationen für doppelte einträge sparen. brauchst also nur alles in diese liste hinzufügen und kannst den inhalt danach direkt wieder in ne datei schreiben.

bei java gibt es dafür die klasse java.util.Set
war das einfachste und simpelste (das ich da nicht drauf gekommen bin...) und hat war für meine anwendung genau richtig (habs mit c# gemacht (SortedList))

und sortieren wäre egal gewesen obs sortiert ist oder nicht... *anmerk*

danke für die hilfe @all
Oi!Alex ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Applikationen » Entfernen von doppelten "zeilen" in Textdatein
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Batch-Programm doppelte Zeilen entfernen Foxalem Code Kitchen 0 21.05.09 13:20
INSERT - mehrere Zeilen aufs Mal CentralWay (Web-) Design und webbasierte Sprachen 5 10.01.08 21:18
Delphi 6 StringGrid Zeilen/Spalten sortieren Cyberm@ster Code Kitchen 1 26.01.07 17:13
C++ - Zeilen in Vektor schreiben crAb Code Kitchen 7 03.07.05 09:02
Zeilen von Unterordner zählen sfil Linux/UNIX 2 15.06.05 12:36


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61