Hallo,
das CLI-Tool "diff" arbeitet irgendwie nicht wie ich mir das vorstelle. Ich lese den Inhalt aus einer Datenbank aus und vergleiche sie mit dem Inhalt den ich mit "find" ausgelesen habe. Beides liegt in einer Variablen vor. Der Aufrug sieht so aus:
diff -y --suppress-common-lines <(echo "$episode_list_filesystem") <(echo "$episode_list_database")
-y benutze ich wegen der netten Tabellenansicht, --suppress-common-lines um gleiche Zeilen auszublenden. Angenommen die Variablen haben den Inhalt:
/media/data/datei1a.ext /media/data/datei3.ext
und
/media/data/datei1.ext /media/data/datei2.ext /media/data/datei3a.ext
Dann gibt mir diff aus:
/media/data/datei1a.ext | /media/data/datei1.ext > /media/data/datei2.ext /media/data/datei3.ext | /media/data/datei3a.ext
So richtig schlüssig ist mir icht wieso diff erst die Zeile 1 (datei1a und datei1) vergleicht, dann aber erkennt, dass datei2 in der Variable 1 fehlt (anstatt jeweils die zweiten Zeilen [datei3 und datei2] zu vergleichen) und dann wieder die 3. Zeile vergleicht. Wenn diff wirklich zeilenweise durchgeht müsste es so aussehen:
/media/data/datei1a.ext | /media/data/datei1.ext /media/data/datei3.ext | /media/data/datei2.ext > /media/data/datei3a.ext
Was ich suche wäre diese Ausgabe:
/media/data/datei1a.ext >
< /media/data/datei1.ext
/media/data/datei3.ext >
< /media/data/datei2.ext
< /media/data/datei3a.extSo dass man genau erkannt was in Variable 1 vorhanden ist und in Variable 2 nicht und umgedreht.
Falls keiner ein Tool kennt, das genau das macht würde mir nur einfallen Variable 1 zeilenweise einzulesen, zu prüfen ob die Zeile in Variable 2 vorkommt und wenn ja, die Zeile aus Variable 1 und 2 zu löschen. Dann das gleiche mit den (übrig gebliebenen) Zeilen aus Variable 2 mit den (übrig gebliebenen) aus Variable 1. Was aber recht aufwendig wäre.