Hilfe bei Linux Bash Script

little_skunk

Semiprofi
Thread Starter
Mitglied seit
17.08.2006
Beiträge
3.773
Hallo alle zusammen,

ich hab ein Problem. Ich will ein Radiostream aufzeichnen. Den dafür nötigen Befehl kann ich per Hand eingeben.

Streamripper URL -einige Optionen | at 22:00

Nur so als Beispiel. So nun hab ich eine Website mit dem Sendeplan. Mit wget bekomm ich die Seite runtergeladen. Ich will nun aus der Seite die Uhrzeit und den Namen der Sendung rausbekommen. Die Daten werden leider nicht im Stream übertragen. Nennen wir die runtergeladene Datei einfach mal MySendeplan. Ich muss jetzt MySendeplan nach 22:00 durchsuchen ein paar Zeilen weiter kommt dann zwischen (b) und (/b) der Name der Sendung. Soweit der Plan. Welche Befehle brauch ich dafür?
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Entweder schaffst du es mit "grep" an die Daten zu kommen oder du benutzt Regular Expressions.
 
grep hab ich schon ausprobiert. Der Befehl sah dann so aus

cat MySendeplan.html | grep 22:00

Damit bekomm ich aber nur die eine Zeile mit der Uhrzeit. Ein paar Zeilen weiter steht erst der Name der Sendung. Ich muss also ab der gefundenen Zeile weiter suchen. Ich könnte vorher die Zeilenumbrüche entfernen aber dann würde mir grep nichts mehr bringen.

Edit: Eventuell könnte ich nach dem Entfernen der Leerzeichen irgendwas anderes wieder durch Zeilenumbrücher erstetzen aber das ist dann auch irgendwie etwas umständlich. Würde aber vermutlich funktionieren. Wie würde das mit den Regular Expression funktionieren? Gib mir einfach mal ein Beispiel. Auf meine bedürfnisse kann ich das nachher selber zurechtschneiden.
 
Zuletzt bearbeitet:
Poste mal den Bereich wo die Zeit + der Sendename drinsteht bitte.

Gruss
 
PHP:
<table width="100%" border="0" CELLPADDING="1" CELLSPACING="0"><tr>
<td class='TableHeader' height=20>   14:00 - 18:00</td>
<td class='TableHeader' height=20 align=right><a href="/member/8572">xtreme</a>   </td>
                                  </tr>
                                  <tr>
<td colspan=2>
    <table width='100%' BORDER=0 CELLPADDING=0 CELLSPACING=0>
        <tr>
            <td class='Table1' width='100' height='90' align=center valign="top"><a href="/member/8572"><img src="http://profil.technobase.eu/profil_small8572-6.jpg" height="133" width="100" border="0" alt="" /></a></td>
            <td class='Table1' valign="top">
                <table width='100%' BORDER=0 CELLPADDING=0 CELLSPACING=0>
                    <tr>	
                        <td colspan=3 height=2></td>
                    </tr>
                    <tr>
                        <td width=5></td>
                        <td>
                            <b>Classic vs New</b><br>
                            Musikstyle: Elektro House<br><br>
                            Hier präsentiere ich euch jeden Donnerstag einen Mix aus dem neusten der Housescene und den alten Klassikern!
                        </td> 
                        <td width=5></td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
 
Zuletzt bearbeitet:
z.B.
Regex für die Zeit:
Code:
[0-9]+[\:]{1}[0-9]+[\s]{1}[\-]{1}[\s]{1}[0-9]+[\:]{1}[0-9]+

Sucht nach "Zahl:Zahl - Zahl:Zahl"

Gruss
 
Ich hab damit mal ein wenig rumgespielt. So wie du es geschrieben hast funktioniert es bei mir aber nicht. Ich habs so zum Laufen bekommen:

[0-9][0-9]:\[0-9][0-9] - [0-9][0-9]:\[0-9][0-9]

Funktioniert soweit super.

Wie kann ich jetzt aber die Zeit ausschneiden? Ich will ja den Rest der Zeile garnicht haben. Ich könnte mit String arbeiten. Der : ist genau 2 mal vorhanden in der Zeile und es sind immer 2 Ziffern vor und nach dem :

---------- Beitrag hinzugefügt um 10:59 ---------- Vorheriger Beitrag war um 07:39 ----------

Ich hab die Lösung :)

Cut ist mein Freund und helfer. Die Zeilen, die mir Grep zurückliefert haben eigentlich immer den gleichen Aufbau. Ich kann also mit Cut durchgehen und die Spalte X und Spalte Y nehmen Trennzeichen ist das Leerzeichen. Sollte funktionieren. Kann es leider erst heute abend ausprobieren. Eine Frage hätte ich trotzdem noch. Ich bekomm das mit den Regulär Expressions nicht für den Namen der Sendung hin. Ich habs versucht mit

'(b)' und ('+' oder '*') und '<' Ich hoffe das ist jetzt verständlich. In Worten ich hab zwischen das öffnende und schließende Tag ein * und auch ein + versucht. Jedesmal ohne Erfolg. Nur '(b)' gibt mir bereits die richtige Zeile. Ich kann also damit bereits arbeiten aber ich versteh nicht warum das + bzw das * nicht funktioniert hat.

Für alle anderen die Zufällig hier über die Suchfunktion landen sei folgender Link noch erwähnt.

http://openbook.galileocomputing.de/linux/linux_kap05_002.htm

Dort stehen auch noch alle anderen tollen Befehle.
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh