# [bash] Bestimmte Textpassagen aus einem html File auslesen?

## 3PO

Hallo Zusammen,

ich lade mir mit curl den Inhalt eine Webinterfaces eines Gerätest herunter.

Nun sin da nätürlich viele html-Tags enthalten, die ich nicht brauche.

Ich möchte nur haben, was zwischen "<PRE>" und "</PRE>" steht.

Quasi so: 

 *Quote:*   

> <HTML><META HTTP-EQUIV="Pragma" CONTENT="no-cache"><META HTTP-EQUIV="Expires" CONTENT="-1"><TITLE>Info pages</TITLE>........<PRE>Das ist
> 
> der Text den ich rausfilten möchte
> 
> </PRE><input type="button" value="Home" onclick="parent.location='/............

 Mit grep und cut komme ich da wohl nicht weiter, wie gehe da ich am besten vor?Last edited by 3PO on Sat Nov 06, 2010 5:06 pm; edited 1 time in total

----------

## Max Steel

eventuell kannste mit sed was erreichen.

Allerdings kenn ich mich da nicht so gut aus (denk dran das das html-File auch durchaus anderst formatiert sein kann ---> das erschwert die ganze Sache)

----------

## 3PO

Hmm.......,

scheint wohl komplizierter zu sein, als ich gedacht habe?

----------

## slick

Ideenansatz, natürlich entsprechend anpassen/tricksen:

```
lynx -source "http://meineseite" | grep "<pre>" | head -n 1 | cut -d ">" -f 2 | cut -d "<" -f 1
```

Evt. kann man auch erstmal mittels sed alle "\n" "\r" durch Leerzeichen ersetzen. Damit ist alles in einer Zeile. Dann jedes Vorkommen von "<pre" oder "</pre>" durch "\n" ersetzen. Damit ist in der ersten Zeile der HTML-Code vor dem ersten "<pre>", in der zweite dein Text und in der dritten der HTML-Code nach dem ersten "<pre>". Dann kannst mit head die passende Zeile herausholen. Alle in allem ziemlich simpel wenn man ein wenig rumspielt. Aufpassen mußt wie erwähnt nur wenn sich der Code der Seite ggf. bei jedem Aufruf etwas ändert. Aber solange keine zusätzlichen "<pre>...</pre>" Blöcke einkommen, macht das bei der beschriebenen Variante nichts.Last edited by slick on Sun Nov 07, 2010 1:58 pm; edited 2 times in total

----------

## Jean-Paul

Das geht schon mit grep und cut.

```

[jean ~]$ echo "<PRE>Das ist der Text den ich rausfilten möchte </PRE>" | grep "<PRE>" | cut -d\< -f2 | cut -d\> -f2

Das ist der Text den ich rausfilten möchte

```

Jean-Paul[/code]

----------

## 3PO

Danke!  :Smile: 

Ich habe es nun so gelöst:

```
lynx -source $URL | tr '\n' '~' | sed 's/^.*<PRE>\(.*\)<\/PRE>.*$/\1/' | sed 's/~/\n/g'
```

----------

## think4urs11

Der Vollständigkeit halber hier noch der Thread in dem schonmal ähnliches gefragt wurde: sed, grep, irgendwas - aber keine Zeilen

----------

