[+] Wyci

Ogólne pytania dotyczące systemu
Van Pytel
Beginner
Posty: 166
Rejestracja: 09 maja 2010, 17:05

[+] Wyciąganie tekstu ze stringu.

Post autor: Van Pytel »

Potrzebuje wyciągnąć jednym poleceniem tekst ze stringu.
Mam taki tekst:
06</td><tr><td><b>Nazwa:</b></td><td>XxXxX</td>

Mam taki skrypt:

Kod: Zaznacz cały

VAR=$(wget -qO - http://..... | grep Nazwa| awk '{print($9,$10)}')
echo ${VAR:38:2}
I to się sprawdza. Ja natomiast chciałbym to skrócić do jednego polecenia, tak aby wyciągnąć XxXxX. Przy czym XxXxX jest zmienne to znaczy może zawierać kilka znaków - nie jest to stała wartość.

Pewnie ładne to mozna wyciągnąć za pomocą wyrażeń regularnych, ale ich dobrze nie znam :(

Macie jakiś pomysł?
Awatar użytkownika
mati75
Junior Member
Posty: 625
Rejestracja: 30 lipca 2009, 11:19
Lokalizacja: default city

Post autor: mati75 »

Kod: Zaznacz cały

wget -qO - http://..... | grep Nazwa| awk '{print($9,$10)}'
Van Pytel
Beginner
Posty: 166
Rejestracja: 09 maja 2010, 17:05

Post autor: Van Pytel »

No i wypluwa mi to:
06</td><tr><td><b>Nazwa:</b></td><td>XxXxX</td>

A to jeszcze trzeba obrobić jakoś, aby wydostać XxXxX.
Awatar użytkownika
mati75
Junior Member
Posty: 625
Rejestracja: 30 lipca 2009, 11:19
Lokalizacja: default city

Post autor: mati75 »

Kod: Zaznacz cały

wget -qO - http://..... | grep Nazwa| awk '{print($9,$10)}' | sed s/'<*td>'// | sed s/'<*tr>'// | sed s/'<*b>'//
Van Pytel
Beginner
Posty: 166
Rejestracja: 09 maja 2010, 17:05

Post autor: Van Pytel »

Ok, pobawiłem się tym sedem. Wyszło mi coś takiego:
wget -qO - [url]http://.[/url].. | grep Nazwa | awk '{print($9,$10)}' | sed s/'<*td>//g' | sed s/'<*tr>//g' | sed s/'<*b>//g' | sed s/'<tr>//g' | sed s/'*<\///g' | sed s/'<\/Nazwa:<\/<\///g' | sed s/'<\///g'

I wychodzi:
06XxXxX

Tylko jeszcze to 06 <-- to też jest zmienne więc, ciężko przewidzieć co tam będzie.

06</td><tr><td><b>Nazwa:</b></td><td>XxXxX</td>

Najlepiej by było wyciąć tekst między ostatnimi <td> <---> <td>XxXxX</td>.

Edit:
Znalazłem rozwiązanie:

Kod: Zaznacz cały

wget -qO - http://..... | grep Nazwa| awk '{print($9,$10)}' | sed s/'<\/td>/<td>/g' |  awk -F'<td>' '{print $5}'
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Co prawda nie podałeś większego fragmentu tekstu, ale ja bym to zrobił tak:

Kod: Zaznacz cały

wget -qO - http://..... | perl -lne 'if (/Nazwa/) {/(\w+)\<\/td\>$/; print $1}'
Van Pytel
Beginner
Posty: 166
Rejestracja: 09 maja 2010, 17:05

Post autor: Van Pytel »

Też działa :)
Dziękuje wszystkim za odpowiedzi.
ODPOWIEDZ