Strona 1 z 1

Bash, sed - wycinanie tekstu między 2 tagami html

: 02 marca 2009, 22:45
autor: cleanix
Witam!

Próbowałem wyciąć fragment tekstu ze strony, na podstawie (http://debian.linux.pl/viewtopic.php?t=11569).

Robiłem coś w stylu tego:

Kod: Zaznacz cały

sed -n '/\<div style="text-align:left; margin:10px">/,/\

strona/'p plik.txt
Ewentualnie dawałem więcej 'slaszy'; przed cudzysłowem.

Tak jak na nie działającym przykładzie zależy mi aby uzyskać tekst w formacie:
<h1>Zdążyć przed Panem Bogiem - streszczenie</h1>Tego dnia Marek miał
(...)
Słyszeli też muzykę, bojąc się, że zagłuszy ona ich krzyki i odgłosy walki, a wówczas nikt niczego nie zauważy.
Przykładowe źródło z klp.pl: http://wklej.org/id/59435/

Pozdrawiam.

: 02 marca 2009, 23:24
autor: snah
sed edytuje plik linia po linii.

Kod: Zaznacz cały

sed -n '/<div style="text-align:left; margin:10px">/,/

strona/'p plik.txt

Wyświetli wszystkie linie pliku zaczynając od linii zawierającej pierwsze wyrażenie regularne, do linii zawierającej wyrażenie drugie.

Tak na szybko to można za pomocą string replace usunąć 'śmieci'

Kod: Zaznacz cały

sed -n '/<div style="text-align:left; margin:10px">/,/

strona/'p plik.txt | sed -e 's/.*<div style="text-align:left; margin:10px">//' -e 's/

strona.*//'

: 03 marca 2009, 00:07
autor: cleanix
snah, dziękuję ci bardzo za profesjonalne podejście do sprawy :) .

Rozjaśniłeś mi trochę.

Pozdrawiam