seth_not@home: diff - zeichenweise ausgabe bei dateien mit langen zeilen

gudn tach!

mit
  diff file1 file2
kann man ja den unterschied zweier dateien ausgeben lassen.
mit
  vim -d file1 file2
wird er sogar noch huebsch grafisch aufbereitet.

wenn ich aber nun zwei dateien habe mit sehr langen zeilen (mehrere tausend zeichen), die sich nur in wenigen zeichen unterscheiden, dann ist die ausgabe in beiden obigen faellen unuebersichtlich.

wie geht das huebscher? oder anders gefragt: wie sage ich diff (oder vim), dass nur der relevante teil, und nicht die kompletten zeilen ausgegeben werden soll(en)?

prost
seth

  1. Wenn in man diff nichts darüber steht und es wirklich nur wenige Unterschiede gibt, dann versuch doch mal geschickt formatierte hex dumps der beiden Dateien mit diff zu vergleichen.

    Cruz

    1. gudn tach!

      Wenn in man diff nichts darüber steht

      zumindest habe ich nichts passendes gefunden.

      und es wirklich nur wenige Unterschiede gibt, dann versuch doch mal geschickt formatierte hex dumps der beiden Dateien mit diff zu vergleichen.

      was ist "geschickt formatiert"?
      meinst du mit "kleinen aenderungen" aenderungen, die die anzahl der zeichen unveraendert lassen? in diesem fall koennte ich auch einfach irgendein wrap-tool drueberlaufen lassen und anschliessend diff drueberjagen. aber leider belassen die aenderungen nicht die zeichenlaengen.

      prost
      seth

      1. Hallo

        was ist "geschickt formatiert"?

        nun, hex bietet eine Menge Alternativen den Output darzustellen, wie binär, oktal, hexadezimal und ich glaube sogar als ASCII Byte für Byte. In dem Fall kannst du sogar mühelos die einzelnen Zeichen erkennen. Das  ganze kannst du dann auch noch in Spalten formatieren, wie du lustig bist. Auf so eine Ausgabe kannst du dann auch sehr gut diff anwenden.

        meinst du mit "kleinen aenderungen" aenderungen, die die anzahl der zeichen unveraendert lassen?

        Das war nur so unüberlegt dahergesagt. Eigentlich ist die Anzahl und Art der Änderungen egal. Wenn du die oben beschriebene Methode anwendest, ist es etwa so, als würdest du ein Space zwischen jedes Zeichen setzen und an geeigneter Stelle umbrechen.

        frohe Ostern
        Cruz

        1. gudn tach!

          was ist "geschickt formatiert"?

          nun, hex bietet eine Menge Alternativen den Output darzustellen, wie binär, oktal, hexadezimal und ich glaube sogar als ASCII Byte für Byte.

          soweit kann ich folgen und stimme zu.

          In dem Fall kannst du sogar mühelos die einzelnen Zeichen erkennen. Das  ganze kannst du dann auch noch in Spalten formatieren, wie du lustig bist. Auf so eine Ausgabe kannst du dann auch sehr gut diff anwenden.

          bei diesem teil habe ich das gefuehl, ruettelfest auf einem schlauch zu stehen.

          angenommen ich habe
          -------- file1 --------
          xxxxx foo xxxxxxxxix
          -------- end of file1 --------

          und

          -------- file2 --------
          xxxxx quux xxxxxxxxxx
          -------- end of file2 --------

          wie sollte ich dann die hexfiles

          -------- file1 --------
          78 78 78 78 78 20 66 6f 6f 20 78 78 78 78 78 78
          78 78 69 78
          -------- end of file1 --------

          -------- file2 --------
          78 78 78 78 78 20 71 75 75 78 20 78 78 78 78 78
          78 78 78 78 78
          -------- end of file2 --------

          formatieren?

          ein byte pro zeile? (dafuer braeuchte ich dann uebrigens nicht den umweg ueber hex)

          meinst du mit "kleinen aenderungen" aenderungen, die die anzahl der zeichen unveraendert lassen?

          Das war nur so unüberlegt dahergesagt. Eigentlich ist die Anzahl und Art der Änderungen egal. Wenn du die oben beschriebene Methode anwendest, ist es etwa so, als würdest du ein Space zwischen jedes Zeichen setzen und an geeigneter Stelle umbrechen.

          "geeignete stelle"? hmm, ok, ich koennte scriptgesteuert in solchen zeilen direkt vor dem ersten ungleichen zeichen umbrechen, aber alles was danach kommt, macht mir wieder probleme.

          prost
          seth

          1. Hallo seth,

            was ist "geschickt formatiert"?

            ich dachte eher so an hexdump -c, das ist glaube ich der Flag der in etwa die Form erzeugt, die ich beschrieben habe. Abgesehen davon bietet hexdump noch sehr vielfältige Möglichkeiten den Output zu formatieren, das dir möglicherweise bei deinem diff Problem hilft, wenn du es nicht schon längst gelöst hast. Mehr kann und will ich nicht dazu sagen, es ist ja auch möglich dass hexdump ein Holzweg ist, denn so ganz atomar habe ich dein Problem nicht analysiert. Es war eher nur ein gutgemeinter Vorschlag, der mir ins Geiste geblitzt ist, als ich dein Posting gelesen habe.

            Ciao,
            Cruz

            1. gudn tach!

              was ist "geschickt formatiert"?

              ich dachte eher so an hexdump -c, das ist glaube ich der Flag der in etwa die Form erzeugt, die ich beschrieben habe.

              ich habe hexdump nicht, sondern nur xxd, od und dump, aber die ausgabe von "hexdump -c" wird wohl die gewoehnliche darstellung sein, wenn ich http://www.linuxinfozentrum.ch/befehle/hexdump.htm richtig verstanden habe.
              und wie mir diese nuetzlich sein sollte, habe ich noch nicht verstanden.

              Abgesehen davon bietet hexdump noch sehr vielfältige Möglichkeiten den Output zu formatieren, das dir möglicherweise bei deinem diff Problem hilft

              hmm, habe da (und bei xxd, od und dump) nix gefunden, was mir helfen koennte.

              Mehr kann und will ich nicht dazu sagen, es ist ja auch möglich dass hexdump ein Holzweg ist, denn so ganz atomar habe ich dein Problem nicht analysiert.

              ach so, ok. nach holzweg sieht mir hexdump z.zt. aus.

              prost
              seth