Sed i regexp - błąd


(Kys91) #1

Witam

Próbuje napisać wyrażenie regularne które zmusi seda do "wyciągnięcia" z dokumentu strona.html wszystkich linków zaczynających się od http://hotfile.com/dl/ a kończących na html i przekazaniu ich do pliku lista.txt.

Jednak komenda

sed -e ^(http://hotfile.com/dl/)0-9]{8}/[a-z0-9]{7}/[a-zA-Z0-9_]{5,70}$html strona.html > la.txt

zwraca błąd

D:\Pobieracz 0.1.3>sed -e (http://hotfile.com/dl/)0-9]{8}/[a-z0-9]{7}/[a-zA-Z0-9

sed: -e expression #1, char 1: unknown command: `('

Może mi ktoś pomóc sprawić żeby to działało? Przykładowy link do hotfile:

http://hotfile.com/dl/78204973/5788d70/cos_tam0110.rar.html

(roobal) #2

Spróbuj tak:

sed -n -e '/^[http]/p' strona.html > la.txt

Tak poza tym, jeśli ma pasować do końca linii html, to powinno być html$, a nie $html, natomiast adres w nawiasie jest błędem, ponieważ sed tego nie rozpoznaje jako polecenie, a traktuje jako znak wyrażenia.

Pozdrawiam!


(Redcrystalnet) #3

Proszę bardzo:

sed -ne "s@.*\(http\:\/\/hotfile.com\/dl\/[0-9]\{8\}\/[a-z0-9]\{7\}\/[a-zA-Z0-9_]\{5,70\}.*\.html\).*@\1@p"

Postaraj się analizować naszego kodu! :wink:

Pozdrawiam!


(Kys91) #4

Oba rozwiązania nie działają a sed nie wypluwa rzadnych błędów.

@ redcrystalnet , zmieniłem nawet 70 na 150 dodałem - po _ i nic


(Redcrystalnet) #5

Nie wierzę ci, sprawdzałem mój kod i wszystko działa. Napisałem ci, że musisz analizować nad przebiegiem działań, co zrobiłem kod. :slight_smile: Krok po kroku i działa (jeśli nie działa, możesz cofnąć i dokonać modyfikacji)! :wink:

Oto poprawka, zlikwidowałem parę symboli "[]{}" i zastąpiłem na nieokreślony wystąpień do końca "html":

sed -ne 's@^.*\(http\:\/\/hotfile.com\/dl\/.*\/.*\/.*\.html\).*@\1@p'

Pozdrawiam!


(Kys91) #6

redcrystalnet , Miałeś racje bije się w piersi pierwszy kod działa znakomicie błąd popełniałem ja.

Dzięki za pomoc!


(Kaka') #7

Kys ,

Rejestrując się na niniejszym forum zobowiązałeś się przestrzegać jego regulaminu. Niestety, w tym momencie łamiesz go nie tytułując poprawnie tematu. Proszę zapoznać się w pierwszej kolejności z regulaminem forum, a następnie z tym tematem. Po zapoznaniu się proszę poprawić tytuł tematu, używając przycisku zmien.gif