staging.inyokaproject.org

Bestimmten Textabschnitt auslesen und in anderem File prüfen

Status: Ungelöst | Ubuntu-Version: Ubuntu 17.10 (Artful Aardvark)
Antworten |

Kasashii

Anmeldungsdatum:
21. März 2018

Beiträge: 6

Hallo,

ich habe mal wieder ein kleines Problem.

Ich lade mit dem Programm Webgrabber+ von mehreren Sender EPG-Dateien herunter. In dem Programm kann ich selbst keine Überprüfen machen ob ein Download nicht funktioniert hat. Ich habe mir jetzt überlegt in der Ausgabedatei zu prüfen ob der Sender, welche in der Config stehen, vorhanden sind. Das Problem jetzt ist, dass alle Ansätze die ich gefunden habe nicht funktionieren, da die Zeilen komplett aneinander stehen ohne Leerzeichen und ich es erst aufwändig aufgesplittet habe damit ich am Ende nur noch die Sender angezeigt bekomme.

1
2
3
4
<channel update="i" site="freeview.com.au" site_id="101305020525" xmltv_id="7flix [AUS]">7flix [AUS]</channel>
<channel update="i" site="freeview.com.au" site_id="101305030534" xmltv_id="7HD [AUS]">7HD [AUS]</channel>
<channel update="i" site="freeview.com.au" site_id="101305020523" xmltv_id="7mate [AUS]">7mate [AUS]</channel>
<channel update="i" site="freeview.com.au" site_id="101305020522" xmltv_id="7TWO [AUS]">7TWO [AUS]</channel>

Das nach xmltv_id=" bis "> sind die wichtigen Informationen

1
2
3
4
5
sed 's/"/" /g' WebGrab++.config.xml > 1WebGrab++.config.xml
sed 's/"/ "/g' 1WebGrab++.config.xml > 2WebGrab++.config.xml
sed 's/.*xmltv_id= " \(.*\) " >.*/\1/' 2WebGrab++.config.xml > 3WebGrab++.config.xml

tr [:blank:] "~" < 3WebGrab++.config.xml > 4WebGrab++.config.xml

So kann ich die Zeilen mit cat in ein Array schreiben, mit Leerzeichen hätte ich dann nacher 20 Elemente

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
file="4WebGrab++.config.xml"
lines=`cat $file`

for line in $lines 
do
newline=$(echo $line | tr "~" " ")
echo $newline

if grep -w "$newline" wg++/guide_AUS_2018-03-26.xml
then 
echo "Die Datei enthält $newline"
else 
echo "Die Datei enthält $newline nicht"
fi

Wenn ich jetzt allerdings nach diesen Sendern in der Ausgabedatei suche bekomme ich keine Ergebnisse, da sort auch alles zusammen geschrieben ist.

1
2
<display-name lang="en">7flix [AUS]</display-name>
<programme start="20180326053000 +0000" stop="20180326060200 +0000" channel="7flix [AUS]">

Gibt es noch andere Möglichkeiten das zu erledigen?

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

XML ist kein Text, sollte also auch nicht mit allgemeinen Textwerkzeugen verarbeitet werden, sondern mit XML-Werkzeugen. Du könntest Dir beispielsweise mal xmlstarlet anschauen oder XSLT.

Antworten |