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.