zwei Dateien vergleichen und Zeilen löschen

  • Hallo,


    ich hätte gerne ein Script und hab zu wenig Ahnung.


    Das Script soll:
    Jede Zeile von Datei1 auslesen und überprüfen, ob die Zeile auch in Datei2 vorkommt. Wenn die Zeile in Datei2 vorkommt, diese Zeile aus Datei2 löschen.


    Sinn und Zweck:
    Ich möchte meine channels.conf ausdünnen und dazu eine channels-blacklist.conf anlegen, in die ich alle Sendereinträge, die ich nicht in meiner channels.conf haben möchte reinkopiere. Nach einem Update/Scan der Channels sind ja wieder die ganzen nichtgewollten Channels in der Liste. Das Script soll diese dann wieder entfernen.


    Kann mir da jemand auf die Sprünge helfen?


    Besten Dank.


    Gruß
    Steevee

    VDR1: EasyVDR 2.0.0, MB Asus M2N-VM HDMI, TT S2-6400, ...
    VDR2: EasyVDR 2.0.0, MB Asus M4N78 Pro, AMD Athlon II X2 250, DVB-S2 TeVii S464, 2*DVB-S Budget, GraphTFT an VGA, TV an HDMI
    VDR3: EasyVDR 2.0.0, MB Asus M2N-VM HDMI, DVB-S FF1.3, DVB-S Budget, Atric-IR, GraphTFT an FF, TV an DVI
    #VDR4: EasyVDR 0.8.x, DVB-S FF1.3, DVB-S Budget, TV über AV-Board
    sonstige VDR Test-Hardware: Skystar HD2, Touch-TFT, IMON-LCD, Fritz-Box, ...

  • Warum so umständlich? Wenn du die channels.conf einmal ausgedünnt hast, dann kannst du doch am Ende eine Gruppe "ungewünschte Kanäle" schreiben. Die dann wieder hinzugekommenen Kanäle landen alle dahinter. Da kannst du sie dann viel einfacher löschen, ich frage mich nur wozu? Da stören sie doch gar nicht.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Der Trenner dann so

    Code
    :@200

    dann in epgsearch festlegen das Kanäle bis 199 angezeigt werden und die neuen sind ausgeblendet.


    Zur Ursprungsfrage: Ich würde Python nehmen. Leicht zu lernen und in Stringverarbeitung besser als mit Shellscript und grep/sed rumzueiern.
    Blacklist zeilenweise einlesen und die ChannelIDs in nen Array packen. Dann die Kanalliste einlesen und alle Zeilen ignorieren deren ChannelID im Blacklist Array vorkommt.


    cu

  • Moin!


    Der Trenner dann so

    Code
    :@200


    , dann in epgsearch festlegen das Kanäle bis 1999 angezeigt werden und die neuen sind ausgeblendet.


    Die beiden Zahlen sollten zusammen passen, ich denke, du meinst als Trenner

    Code
    :@2000


    Zur Info, warum der da ein @-Zeichen hat: damit kann man die Kanalnummer vorgeben, siehe vdr-Doku.


    Lars.

  • Warum so umständlich? Wenn du die channels.conf einmal ausgedünnt hast, dann kannst du doch am Ende eine Gruppe "ungewünschte Kanäle" schreiben. Die dann wieder hinzugekommenen Kanäle landen alle dahinter. Da kannst du sie dann viel einfacher löschen, ich frage mich nur wozu? Da stören sie doch gar nicht.


    Gerald


    Naja, so ähnlich händel ich das auch gerade.
    Mich stören aber die vielen unnützen Kanälen. Kürzere Kanalliste ist schon übersichtlicher.
    Weitere Vorteile: Man kann bekannten Mist aus verschiedenen Kanallisten entfernen. Weiterhin kann man tote Einträge, die der VDR ja nicht löscht, aus verschiedenen Kanallisten rausfischen. Und ich hab die Kanäle sozusagen auch nicht entgültig gelöscht, da ich ja immer noch ne Kopie des Kanals in der Blacklist habe.

    VDR1: EasyVDR 2.0.0, MB Asus M2N-VM HDMI, TT S2-6400, ...
    VDR2: EasyVDR 2.0.0, MB Asus M4N78 Pro, AMD Athlon II X2 250, DVB-S2 TeVii S464, 2*DVB-S Budget, GraphTFT an VGA, TV an HDMI
    VDR3: EasyVDR 2.0.0, MB Asus M2N-VM HDMI, DVB-S FF1.3, DVB-S Budget, Atric-IR, GraphTFT an FF, TV an DVI
    #VDR4: EasyVDR 0.8.x, DVB-S FF1.3, DVB-S Budget, TV über AV-Board
    sonstige VDR Test-Hardware: Skystar HD2, Touch-TFT, IMON-LCD, Fritz-Box, ...

  • Das aussortieren get auch auf den Schell ganz einach:

    Code
    while read line; do grep -q "$line" blacklist.conf || echo $line; done < channels.conf


    Dies sollte alle Kanäle ausgeben die nicht in der Blacklist stehen.
    Wenn Du wie vorgeschlagen eine Markierung (für dieses Beispiel '':neu") gesetzt hast, kannst Du alles nach dieser Markierung so löschen:

    Code
    sed "/:neu/q" -i channels.conf


    Claus

    MLD 5.5 mit vdr 2.6 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.5 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Akademisches Gedankenspiel: Eigentlich weist die Ursache des Sortier-Wunsches in diesem Thread auf eine konzeptionelle Schwäche des VDRs hin.


    Einige User wünschen sich für den VDR ein Bouquet-Verwaltung, wobei die Frage ist, was man unter diesem Begriff versteht.


    Ich würde mir das so vorstellen:
    1) channels.conf - enthält immer alle empfangbaren Kanäle der aktiven DVB-Quellen, also eine maximale Zahl an Kanälen und auch Neuzugänge. Sortiert ist die channels.conf dann aber nicht nach gusto des Users, sondern meinetwegen nach Transpondern und Frequenzen. Bei allen Kanälen wird auch ein Timestamp gespeichert, wann der Kanal das erste Mal empfangen worden ist und noch ein Timestamp, wann der Kanal das letzte Mal erfolgreich empfangen worden ist.


    2) mychannels.conf oder favorites.conf - enthält Verweise auf die Kanäle in der channels.conf, die vom User beliebig bearbeitet werden kann.


    Das lässt sich noch weiterspinnen (Trennung von Transponder-Parametern von Kanal-Parametern, mehrere Favoriten-Listen für unterschiedliche User, Radio-Favoriten, etc.)


    Gruß
    hepi

  • Die beiden Zahlen sollten zusammen passen, ich denke, du meinst als Trenner

    Code
    :@2000


    Jup, da hast du mich vor meinen zeitnahen Edit erwischt.


    Das aussortieren get auch auf den Schell ganz einach:

    Code
    while read line; do grep -q "$line" blacklist.conf || echo $line; done < channels.conf


    Klappt aber nicht mehr sobald sich nen Name oder ne PID ändert.


    cu

  • hepi: ließe sich das meiste davon nicht mit dem channellists-plugin realisieren das sowieso schon bei yavdr vorinstalliert ist?


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • hepi: ließe sich das meiste davon nicht mit dem channellists-plugin realisieren das sowieso schon bei yavdr vorinstalliert ist?


    Weiß nicht recht, wie ist es denn mit EPG-Daten in epg.data, die aktualisiert werden, wenn Kanalliste 1 aktiv ist und nicht mehr aktualisiert werden, wenn Kanalliste 2 aktiv ist (weil Kanal X dort fehlt). Was ist, wenn ein Timer existiert auf einem Kanal von Kanalliste 1, aber der Kanal auf Kanalliste 2 gar nicht existiert (und diese aktiv ist, wenn der Timer loslegen soll)? Vielleicht habe ich mich mit dem channellists-Plugin nicht genug auseinandergesetzt, aber was ich meine ist:


    Mein Wunsch: Im Hintergrund hat der VDR immer zu jeder Zeit das Wissen über alle existierenden Kanäle. Im Vordergrund sind nur diejenigen sichtbar, die ein Nutzer gerade sehen will. Und EPG-Daten werden gepuffert für diejenigen Kanäle, die im Vordergrund in irgendeiner Favoritenliste mindestens einmal enthalten sind.


    Gruß
    hepi



    EDIT: Zum Plugin: http://www.zulu-entertainment.de/content.php?f=VDR-Plugins&sub=Channellists

    Zitat

    save timers and rewrite the current channels.conf with the selected list


    Anscheinend werden Timerlisten getrennt gespeichert für alle vorhandenen Kanallisten? Wie soll das in der Praxis dann funktionieren?

  • Ne channellists ist keine Bouquet/Favoritenverwaltung. Ich vermute das ist etwas was nach vdr 2.0 im VDR gemacht werden sollte. Die internen Kanalliste sollte unterschiedlich von der Kanalliste die der Benutzer sieht sein. Wobei ich den absoluten Nutzen hier auch nicht unbedingt sehe. Funktioniert so auch nicht schlecht., für den Nutzer wurden ja schon Lsg genannt. Andererseits wäre es wohl auch interessant 1000 Kanäle weniger im EPG Scan durchjuckeln zu müssen (Annahme Sat, 19.2E dürfte in etwa die Liste der typischerweise uninteressanten Kanäle sein).

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

  • Zusatz-Features, die man durch Entkoppelung gewinnen könnte, wären,


    a) dass man in einer einzigen Favoritenliste theoretisch Kanäle doppelt drinhaben kann, was man jetzt nicht kann. Beispiel: Ein Kanal ist halb Doku-Kanal, halb Kinder-Kanal. Nun will man den Kanal einmal in der Gruppe Doku und einmal in der Gruppe Kinder haben. Geht momentan nicht.


    b) Kanalnamen manuell übersteuern. Auf S28.2E gibt es viele wichtige Kanäle, die keinen eigenen menschlich lesbaren Kanalnamen haben. Beispiel: Der schottische Sender "STV HD" hat in der VDR-Kanalliste den Namen 3855. Man möchte nun gern die Möglichkeit haben, den Namen manuell zu ändern, aber gleichzeitig soll die automatische Aktualisierung der Kanalliste aktiv bleiben.


    c) Nicht-Lineares Anordnen der Kanalliste entsprechend eines kommerziellen / proprietären Anbieters (sky uk). Dazu gibt es hier im Portal auch einen Thread mit einem Behelfs-Script von oldmanuk. Der VDR soll sich nach Wunsch so bedienen lassen wie eine proprietäre Sky-Box, damit User sich nicht umgewöhnen müssen.


    Gruß
    hepi

  • Sorry, wenn der Thread jetzt bald komplett gehijacked ist, aber noch ein Gedanke:



    Problem: Eine channels.conf mit Tausenden von Kanälen führt zu einer riesigen epg.data-Datei.
    Erster Kommentar: Das ist erstmal möglicherweise gar kein Problem.
    Verbesserungs-Ansatz: Der VDR merkt sich, welche Kanäle vom Nutzer als wichtig eingestuft werden. Das bedeutet, dass der VDR protokolliert
    a) Auf welchen Kanälen wird beim Live-TV verweilt.
    b) Auf welchen Kanälen werden Timer definiert.
    c) Welche Kanäle sind in Favoritenlisten hinterlegt / bzw. befinden sich am Anfang der Kanalliste.
    d) Welche Kanäle sind inhaltlich oder vom Anbieter her "verwandt" mit den Kanälen von a) und b) und c).


    Als Resultat werden EPG-Daten nur noch von denjenigen Kanälen für die Suche indiziert, die zu den interessanten/genutzten Sendern gehören.


    Gruß
    hepi

  • Moin!


    Als Resultat werden EPG-Daten nur noch von denjenigen Kanälen für die Suche indiziert, die zu den interessanten/genutzten Sendern gehören.


    Benutz doch einfach das noepg-Plugin mit einer Whitelist... SCNR :)


    Lars.


  • Benutz doch einfach das noepg-Plugin mit einer Whitelist... SCNR :)


    Guter Vorschlag, aber warum soll ich die Whitelist manuell erstellen, wenn das auch automatisiert möglich wäre? ;) So eine Whitelist zu erstellen kommt ja eigentlich der Erstellung einer Favoritenliste gleich. Ich kann diese Liste dann aber nicht als Favoritenliste im VDR nutzen. ;)


    Gruß
    hepi

  • Moin!


    Andere Idee, die letztens in einer Diskussion aufgekommen ist: Könntest du in das noepg-Plugin eine Funktion einbauen, dass alle Kanäle ab Kanal X kein EPG mehr bekommen?


    Ja, ist auf meiner TODO-Liste: https://github.com/flensrocker/vdr-plugin-noepg/issues/3


    Lars.

  • Hallo,


    danke für die Ausführungen.
    Klar, eine Bouquet-Verwaltung, wie Hepi beschrieben, währe natürlich der Luxus.


    Jedoch mit dem Ansatz von clausmuus, komme ich soweit, dass es mir erstmal langt. Danke hierfür.


    Nach einem Channel-Scan kann ich jetzt alle Sender von der Blacklist aus meiner channels.conf löschen. Neue Sender sind dann hinter meiner letzten Marke. Nun kann ich die neuen guten Sender in der channels.conf hoch-sortieren. Nicht gewünschte Sender bleiben unter der letzten Marke. Mit einem weiteren Befehl lösche ich nicht nur alle Sender hinter der letzten Marke der Channels.conf, sondern verschiebe sie in die blacklist.conf.


    Das das nicht funktioniert, wenn sich Name oder PID geändert haben stört mich nicht, denn dann ist der Sender vieleicht ja jetzt interessant. Wenn nicht, kommt auch der Eintrag in die blacklist.


    Gruß
    Steevee

    VDR1: EasyVDR 2.0.0, MB Asus M2N-VM HDMI, TT S2-6400, ...
    VDR2: EasyVDR 2.0.0, MB Asus M4N78 Pro, AMD Athlon II X2 250, DVB-S2 TeVii S464, 2*DVB-S Budget, GraphTFT an VGA, TV an HDMI
    VDR3: EasyVDR 2.0.0, MB Asus M2N-VM HDMI, DVB-S FF1.3, DVB-S Budget, Atric-IR, GraphTFT an FF, TV an DVI
    #VDR4: EasyVDR 0.8.x, DVB-S FF1.3, DVB-S Budget, TV über AV-Board
    sonstige VDR Test-Hardware: Skystar HD2, Touch-TFT, IMON-LCD, Fritz-Box, ...

  • Du könntest auch nochmal schauen, ob die von Channelpedia fertig generierten channels.conf's von der Gruppierung her für Dich eine nützliche Grundordnung mitbringen. Es gibt eine channels.conf, die zunächst grob nach Regionen und dann fein nach Sendergruppen geordnet ist:
    http://channelpedia.yavdr.com/…d_by_groups.channels.conf


    Solche generierten Listen gibt es auch für andere Sat-Positionen/Anbieter.


    Frei nach dem Motto: Uninteressante Sender auch irgendwie gruppieren,schon damit man weiß, dass in der Gruppe nur uninteressante Sender drin sind. ;)


    Gruß
    hepi

  • Hi,


    also die Trennung in empfangbare Kanalliste und Kanalliste, die der Anwender zu sehen wünscht finde ich top.
    Sollte unbedingt als Viehtscher-Rekwest in die Post-2.0-Todo-Liste aufgenommen werden ;)



    Öhm, das würde ich viel pragmatischer handhaben:
    - wer keine benutzerspezifische Kanalliste pflegt, ist zufrieden mit dem status quo und bekommt das komplette epg
    - wer eine benutzerspezifische Kanalliste pflegt, interessiert sich nicht für Kanäle, die er nicht in "seine" Kanalliste aufgenommen hat. Also könnte der VDR alle EPG-Daten der Sender "vergessen", die nicht in der benutzerspezifischen Kanalliste enthalten sind.


    Gruß Gero


    P.S. Das Problem des Fredstarters habe ich im SortChannel.pl script behandelt. Ist in perl und enthält div. Vergleiche. Einfach mal Forumssuche bemühen. Enthält im Prinzip schon die 2-Teilung in physische Kanalliste und Wunsch-Kanalliste. Nur das letztendlich doch wieder eine channels.conf geschrieben wird.

    Ich bin verantwortlich für das, was ich schreibe, nicht für das, was Du verstehst!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!