# HTML Datei durchsuchen



## kevkev (10. Januar 2006)

Hallo,

Ich will aus einer HTML Datei eine bestimmte URL herausbekommen:
(...)

```
</b> <a href="http://google.de">Google</a> | <a href="http.//ebay.de"><b>eBay</b></a><br>
```
(...)

Über php funktioniert folgender Regex:

```
/<a href=\"(.*?)\">Google/i
```

Nur wie mache Ich das über Linux, denn wenn Ich mit awk eien Datei einlese:

```
awk -f "lol.html"
awk: lol.html: line 1: syntax error at or near <
awk: lol.html: line 2: runaway string constant "><b>
```

Bringt der mir dann eben den error.
Und wie gebe Ich dem awkw dann noch ein Regex mit, und sind die Regexe bei PHP & Linux gleich?

Gruß Kevin


----------



## deepthroat (10. Januar 2006)

Hi.





			
				kevkev hat gesagt.:
			
		

> Nur wie mache Ich das über Linux, denn wenn Ich mit awk eien Datei einlese:
> 
> ```
> awk -f "lol.html"
> ...


Du solltest ruhig mal die Manpage von awk lesen. Die Datei die du awk mit -f übergibst muß eine awk Skriptdatei sein - da sollten awk Befehle drin stehen und kein HTML (das versteht awk so schlecht).

Außerdem ist awk ein Tool um strukturierte Daten - Daten die in sog. Records und Felder unterteilt sind - zu verarbeiten (  ). Eine HTML Datei enthält keine solchen strukturierten Daten weil es durch Tags in eine Baumstruktur eingeteilt ist.

Probiers mal hiermit:
	
	
	



```
sed -ne 's,.*<a href="\([^"]*\)">Google.*,\1,pi' DATEI
```



			
				kevkev hat gesagt.:
			
		

> sind die Regexe bei PHP & Linux gleich?


Linux kennt keine regulären Ausdrücke - wozu auch, es ist nur ein Betriebssystem. Für Linux gibt es verschiedene Programme wie Perl, awk, python, sed, grep und z.B. php. Diese Programme unterstützen reg. Ausdrücke - meist in einer etwas veränderten Form.

Gruß


----------



## kevkev (10. Januar 2006)

Hi,

Ok. Habe nur gedacht, vielleicht geht es ja trotzdem !

Also dein Code Teil funktioniert leider nicht ganz.
Aber jetzt weiß ja an welchem Programm Ich nachhaken muss ^^.

Danke !

Gruß Kevin


----------



## deepthroat (10. Januar 2006)

kevkev hat gesagt.:
			
		

> Also dein Code Teil funktioniert leider nicht ganz.


Was geht denn nicht? Für dein Beispiel funktioniert er bei mir jedenfalls. Der Code ist natürlich nicht sehr tolerant (unterschiedliche Anführungszeichen, Leerzeichen, etc.).

Gruß


----------



## kevkev (10. Januar 2006)

Hi,

Jedenfalls bekomme Ich bei der direkten Eingabe keine Ausgabe in die Bash.
Sry, bin noch grober Anfänger.

gruß kevin


----------



## deepthroat (10. Januar 2006)

Also bei mir sieht das so aus:
	
	
	



```
$ sed -ne 's,.*<a href="\([^"]*\)">Google.*,\1,pi'
</b> <a href="http://google.de">Google</a> | <a href="
http://google.de
```

Wobei ich die zweite Zeile selbst eingegeben habe und die dritte Zeile die Ausgabe von sed ist.

Gruß


----------



## kevkev (10. Januar 2006)

Him

Mhh.
Wenn Ich das so mache will es nicht:
sed -ne 's,.*<a href="\([^"]*\)">Google.*,\1,pi' lol.html

Obwohl lol.html den ganzen HTML Quelltext (mit Umbrüche \n) enthält.

gruß Kevin
PS: Muss erstmal in die Mittagsschule ^^


----------



## deepthroat (10. Januar 2006)

Tja, dann wäre es vermutlich das beste, wenn du die Datei mal als Anhang zur Verfügung stellst oder sagst wo man sie bekommen kann.

Gruß


----------



## kevkev (10. Januar 2006)

Hi,


```
<br> <a href="http://google.de">Google</a>
<br><br><b></b> <a href="http://ebay.de">ebay</a>
```

Zurzeit ist net mehr im Quelltext.

Guß Kevin


----------



## kevkev (10. Januar 2006)

Hi,

Doch, nun gehts !
Danke !

Gruß Kevin


----------

