Strona 1 z 1

[+] Wyciąganie tekstu ze stringu.

: 25 stycznia 2014, 15:45
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ł?

: 25 stycznia 2014, 17:32
autor: mati75

Kod: Zaznacz cały

wget -qO - http://..... | grep Nazwa| awk '{print($9,$10)}'

: 25 stycznia 2014, 20:46
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.

: 25 stycznia 2014, 21:02
autor: mati75

Kod: Zaznacz cały

wget -qO - http://..... | grep Nazwa| awk '{print($9,$10)}' | sed s/'<*td>'// | sed s/'<*tr>'// | sed s/'<*b>'//

: 25 stycznia 2014, 21:32
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}'

: 26 stycznia 2014, 22:31
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}'

: 27 stycznia 2014, 09:19
autor: Van Pytel
Też działa :)
Dziękuje wszystkim za odpowiedzi.