Dateien vergleichen, einige Zeilen ignorieren

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • gregorius007
    Visitor
    • Jan 2008
    • 3

    Dateien vergleichen, einige Zeilen ignorieren

    Hallo,

    leider komme ich weder mit der online-hilfe, noch mit den beiträgen aus diesem forum weiter.

    ich möchte zwei dateien vergleichen, die vom inhalt her erstmals recht unterschiedlich sind, allerdings einen gemeinsamen "kern" haben.
    die eine datei hat z.b. erstmals 20 zeilen "header" (mit versionsnummer, datum,...), die andere hat dafür einen anderen (kürzeren) header, in dem wiederum andere informationen stehen. beide header möchte ich ignorieren.

    auch die kommentare, die in beiden dateien (unterschiedliches format und unterschiedliche anzahl der zeilen!) vorkommen, möchte ich ausblenden.

    dazu habe ich mir bereits verschiedene regeln (unter wichtigkeit) erstellt (also. z.b. regulärer ausdruck "^datum.*" - in diese regeln habe ich alles aufgenommen, was ich bei beiden (!) dateien ignorieren möchte.

    es wird dann auch alles blau angezeigt, allerdings wird es nicht ignorieren, wie ich es meine: in der einen datei wird der text rosa (hellrot?) hinterlegt, der nicht ignoriert wird, auf der anderen seite (in der anderen datei) wird allerdings die gleiche position verwendet, obwohl dort ein "unwichtiger" text steht (also ein blauer text). es sollen stattdessen sozusagen diese "unwichtigen" zeilen ganz gelöscht werden.

    ich möchte, daß der BC bei der ersten datei die ersten 20 zeilen ignoriert und bei der zweiten z.b. die ersten 12 (in abhängigkeit vom inhalt dieser zeilen, der als regel definiert ist). ich möchte nicht, daß er den text darin ausblendet, aber die zeilennummern weiterhin betrachtet.

    ich kann auch gerne (wohin auch immer) zwei beispieldateien zur verfügung stellen, die ich verlgeichen möchte, falls nicht klar ist, was ich meine.

    wie kann ich also zwei solche dateien vergleichen?+

    bsp.:

    datei1:
    datum 25.01.08 <- unwichtig
    uhrzeit 12:20 <- unwichtig
    dateiname: datei1.txt <- unwichtig
    version: 1.0.2 <- unwichtig
    kommentar: "start" <- unwichtig
    FF FF FF FF FF <- WICHTIG
    kommentar "stop" <- unwichtig
    AA DD AA DD DF <- WICHTIG
    kommentar "ende" <- unwichtig

    datei2:
    hersteller: name <- unwichtig
    Pfad: "C:\temp" <- unwichtig
    REM start <- unwichtig
    REM ................. <- unwichtig
    FF FF FF FF FF <- WICHTIG
    REM ................. <- unwichtig
    REM stop <- unwichtig
    REM ................. <- unwichtig
    AA DD AA CC DF <- WICHTIG
    REM ................. <- unwichtig
    REM ende <- unwichtig

    ich möchte aus beiden dateien die inhalte vergleichen, die hier im beispiel als "WICHITG" markiert sind, alle anderen zeilen möchte ich ignorieren.

    den einzigen unterschied, den das tool anzeigen soll ist die zeile:

    "AA DD AA DD DF" != "AA DD AA CC DF"

    alles andere interessiert mich nicht.

    ich bin für alle tips und ideen dankbar. wie kann ich für "datum", "uhrzeit", "dateiname",..., "hersteller", "Pfad", "REM",... usw. regeln so anlegen, daß diese zeilen tatsächlich ignoriert werden?

    danke im voraus.

    --
    viele grüße
    gregor
  • gregorius007
    Visitor
    • Jan 2008
    • 3

    #2
    Re: Dateien vergleichen, einige Zeilen ignorieren

    Hallo,

    es scheint, als wäre der support in diesem forum nicht gerade sehr umfangreich.

    ich werde mir per skript einen vergleich selbst schreiben, kann an dieser stelle das tool (aus den o.g. gründen) überhaupt nicht empfehlen und aufgrund des dürftigen supports gar davon abraten, geld dafür auszugeben.

    --
    grüße
    gregor

    Comment

    • chrroe
      Pooh-Bah
      • Oct 2007
      • 588

      #3
      Re: Dateien vergleichen, einige Zeilen ignorieren

      Hallo gregor!

      Deine Reaktion kann ich teilweise verstehen. Bevor du dich jedoch in deiner Meinung über das Produkt Beyond Compare bzw. dessen Support und dieses Forum festlegst, solltest du folgendes beachten:

      <ul type="square"> [*]BC ist ein amerikanisches Produkt von englisch-sprechenden Entwicklern.[*]In den englischen Unterforen, wo die Autoren aktiv mitlesen und auch schreiben, bleibt kein Problem unbeantwortet.[*]Die anders-sprachigen Foren wurden damals auf Wunsch der vielen BC-Benutzer eingerichtet. Hier ist die Mitarbeit der entsprechenden Leute aber auf rein freiwilliger Basis.[*]Je nach verfügbarer Zeit wird hier auch fast immer weitergeholfen.[*]Eine weitere Möglichkeit, Hilfe bei Problemen zu bekommen, ist sich direkt per Email an die Autoren zu wenden (siehe "Support" Seite auf der Homepage, dann aber am besten auch in englischer Sprache).[*]Solange eine Möglichkeit der Lösung eines Problems in der aktuellen Version von BC besteht, beschreiben die Autoren auch, was man dafür machen muss.[/list]

      Zu deinem konkret geschilderten Problem kann ich so spontan noch nichts beisteuern, dass muss ich mir mal näher ansehen ...

      Da poste ich später nochmal einen Beitrag, sobald ich was rausbekommen habe.


      MfG
      Christoph

      Comment

      • Gunnar
        Moderator
        • Jul 2004
        • 127

        #4
        Re: Dateien vergleichen, einige Zeilen ignorieren

        Moin Gregor,

        die Leute, die hier in den nicht-englischsprachigen Foren ihre Beiträge schreiben, sind keine Mitarbeiter von Scooter Software, sondern tun dies hier hobbymäßig, auf freiwilliger Basis, und gehen ansonsten ihren eigentlichen Jobs nach.
        Daher kann es durchaus passieren, dass ein paar Tage Geduld erforderlich sind, bis eine Antwort auf gepostete Fragen zu finden ist.

        Deutlich schnellere Antworten sind sicherlich in den englischsprachigen Foren zu erwarten, da diese direkt von den Jungs bei Scooter Software und recht zügig bearbeitet werden. Aber dort muss man das Problem halt erstmal in Englisch schildern.

        Noch schneller wird eine Bearbeitung Deiner Anfrage laufen, wenn Du sie direkt an [email protected] sendest. Dies birgt sogar den Vorteil, dass Du denen dort Beispieldateien schicken kannst, anhand derer sie sicherlich leichter Hilfestellung geben können.

        So, nun aber zu Deiner Frage. Ich bin mir in der Tat nicht sicher, ob ich das Problem vollständig durchdrungen habe:

        Also, ich habe mir Deine beiden Beispiel-Dateien genommen, und dazu eine neue Regel erstellt.
        Diese Regel wertet sämtliche Zeilen mit bestimmten Schlüsselwörtern am Zeilenanfang als "unwichtigen Unterschied".
        Die von mir verwendeten Schlüsselwörter sind: "datum", "uhrzeit", "dateiname:", "version:", "kommentar", "hersteller:", "Pfad:" und "REM".
        Dazu habe ich im Dialog "Dateivergleichsregeln" auf der Lasche "Wichtigkeit" für jedes Schlüsselwort je einen Eintrag in der Rubrik "Unwichtiger Text" gemacht.
        Unter "Kategorie" im Dialog "Unwichtiger Text" ist dazu "Eingegrenzt" ausgewählt; bei "Beginnend mit" ist das jeweilige Schlüsselwort eingetragen; und dann wird noch die Checkbox "Am Zeilenende stoppend" angeklickt.
        Auf diese Weise werden Deine Dateien tatsächlich so angezeigt, dass die als unwichtig definierten Zeilen weiß sind, während lediglich die Zeile mit den HexCodes "AA DD AA DD DF" und "AA DD AA CC DF" als Unterschied rot markiert ist.

        Falls dies Dein Problem noch nicht klärt, dann poste einfach nochmals hier, mit Aussicht auf ein paar Tage Wartezeit ... oder wähle einfach einen der oben beschriebenen schnelleren Wege.

        Schöne Grüße,
        Gunnar K translation team

        Comment

        • Aaron
          Team Scooter
          • Oct 2007
          • 16002

          #5
          Re: Dateien vergleichen, einige Zeilen ignorieren


          Ich konnte nicht genau erkennen, wie die Regel auszusehen hat, aber ich sehe die Beispieldateien. Ein paar Dinge die man dazu bemerken kann:

          Text, der blau markiert ist, ist "unwichtig". Das bedeutet, man kann diesen mit der Schaltfläche "Unwichtige Unterschiede ignorieren" (sieht aus wie ein gewelltes Gleichzeichen) zwischen blau und schwarz hin-und-her schalten.

          Du kannst bei der Regeldefinition auch "Seitenköpfe" als unwichtig definieren, sofern es immer eine konstante Anzahl unwichtiger Zeilen am Anfang gibt. Ansonsten kannst Du Dir reguläre Ausdrücke schreiben, die zu Deinen Dateien passen. Beispielsweise wären mehrere Regeln für "unwichtigen Text" denkbar: "^Date.*" oder ".*:.*"

          Oder Du könntest eine Regel für "Zeichenkettenliterale" für WICHTIGE Zeilen erstellen, und alles andere als unwichtig markieren lassen:
          "^\w\w\s\w\w\s\w\w\s\w\w\s\w\w$"

          Sind nur jene Zeilen wichtig, die dem Muster XX XX XX XX XX entsprechen?
          Oder sind auch andere Zeilen wichtig; und nur DATE, oder Zeilen mit einem ":" sind unwichtig?

          Aaron P Scooter Software

          Comment

          • gregorius007
            Visitor
            • Jan 2008
            • 3

            #6
            Re: Dateien vergleichen, einige Zeilen ignorieren

            Hallo,

            danke für die Antworten.

            ich habe bereits mit den Regeln versucht und einige definiert, allerdings ist das ganze noch etwas komplexer.

            Ich habe inzwischen mithilfe von RegExp's (ja, darum kommt man in einem solchen fall nicht herum) die beiden dateien gefiltert (habe dazu ein skript geschrieben) und vergleiche dann die gefilterten dateien.

            so geht es: zwar in zwei schritten, aber es funktioniert.

            danke!

            --
            viele grüße
            gregor

            Comment

            • chrroe
              Pooh-Bah
              • Oct 2007
              • 588

              #7
              Re: Dateien vergleichen, einige Zeilen ignorieren

              Du könntest probieren, dein Skript als externen Konverter in BC für diesen Dateityp zu definieren. Dann geschieht die Umwandlung unmerklich im Hintergrund. Einfach mal bei den Regeln auf den Reiter "Konvertierung" gehen. Dort am besten auch die Hilfe-Funktion aufrufen.

              Im übrigen habe ich es glaube ich mit deinen beiden Beispiel-Dateien geschafft, die gewünschte Filterung innerhalb von BC hinzukriegen:



              Achte dabei besonders auf die Filter-Buttons in der Toolbar.
              Ist das in etwa das Ergebnis, was du erwartest?

              Bye
              Christoph

              Comment

              • Steffen
                Journeyman
                • Nov 2009
                • 11

                #8
                Hallo,

                ich habe das gleiche Problem das ich Zeilen nicht ignorieren kann!
                Kann mir jemand noch genauer erläutern wie man Zeilen ignoriert ohne ein weiteres Prog zu verwenden?

                Danke
                Steffen
                Last edited by Steffen; 04-Nov-2009, 03:29 AM.

                Comment

                • Gunnar
                  Moderator
                  • Jul 2004
                  • 127

                  #9
                  Text als &quot;unwichtig&quot; definieren

                  Hallo Steffen,

                  siehe die Antwort zu Deiner Frage, die Du in diesem Thread gestellt hast:

                  http://www.scootersoftware.com/vbull...1558#post21558

                  Schöne Grüße,
                  Gunnar K translation team

                  Comment

                  Working...