LINUX.ORG.RU

Bash скрипт (отсеивание)

 


0

1

Помогите. Есть вот такой набор, мне нужно вырвать и отобразить в первом число которое будет на месте «199», а во втором «631».

1)<td colspan=«3»><b style=«color: red;»>Долг</b> 199 РіСЂРЅ. &nbspОплатить СЃСѓРјРјСѓ <input size='5' type='number' id='paymentSum' value='199' /> РіСЂРЅ. через:<span style=«vertical-align:middle;»><img src=«img/portmone.png» title=«Р˜СЃРїРѕР»СЊР·РѕРІР°С‚СЊ Portmone.comИнтернет)„onclick=„use_online_pay('form_pay_system1','bill_amount');“ class=„hand“></span><form name=„form_pay_system1"action=“https://www.portmone.com.ua/gateway/" method=„post“ style=„display:none; padding: 0; margin: 0;“>

2)<tr><td align=„right“ colspan=„2“ style=„font: bold 9px Arial, Helvetica, sans-serif;“><nobr><span style=„color:#30AF01“>631 РњР‘</span></nobr>&nbsp</td>



Последнее исправление: KOET (всего исправлений: 2)

Сам нашел. Вот так работает: grep -o -P "([\d]{1,3}) ")

KOET
() автор топика
Ответ на: комментарий от DeadEye

Оно просто в кодировке UTF-8. Эту строку мне выдало.

KOET
() автор топика

во первых вам надо вырвать руки верстальщику :-)

во вторых набить морду back-end программеру - чем их меньше таких будет, тем лучше.

далее как затыка - lynx -dump file.html и любимым средством вынуть цифры из обычного текста. Html сделан так что логических привязок (class,id) нет, но генерится лабуда очевидно динамически.

MKuznetsov ★★★★★
()

Вообще я на форум писал чтоб кто-то помог мне команду типа grep -o -P "([\d]{1,3}) " такого подсказать, а мне куча советов посыпало про руки, ноги и т.д. Вам форум зачем?

KOET
() автор топика
Ответ на: комментарий от KOET

Что-то не так как нужно работает, в месте где 199 оно выдает «1 0», а где 631 выдает «2»

откуда я знаю, что у тебя за текст на входе? Моя регулярка фильтрует ПОСЛЕДНЕЕ число в строке. А ты КАКОЕ хотел?

Hint: sed -rn "s/.*value='([0-9]+)'.*/\1/p"

emulek
()
Ответ на: комментарий от emulek

Вот такой текст на входе:

<td colspan=«3»><b style=«color: red;»>Долг</b> 199 РіСЂРЅ. &nbspОплатить СЃСѓРјРјСѓ <input size='5' type='number' id='paymentSum' value='199' /> РіСЂРЅ. через:<span style=«vertical-align:middle;»><img src=«img/portmone.png» title=«Р˜СЃРїРѕР»СЊР·РѕРІР°С‚СЊ Portmone.comИнтернет)„onclick=„use_online_pay('form_pay_system1','bill_amount');“ class=„hand“></span><form name=„form_pay_system1"action=“https://www.portmone.com.ua/gateway/" method=„post“ style=„display:none; padding: 0; margin: 0;“>

На выходе должно быть в данной ситуации: 199.

Если на входе:

<td colspan=«3»><b style=«color: red;»>Долг</b> 303 РіСЂРЅ. &nbspОплатить СЃСѓРјРјСѓ <input size='5' type='number' id='paymentSum' value='303' /> РіСЂРЅ. через:<span style=«vertical-align:middle;»><img src=«img/portmone.png» title=«Р˜СЃРїРѕР»СЊР·РѕРІР°С‚СЊ Portmone.comИнтернет)„onclick=„use_online_pay('form_pay_system1','bill_amount');“ class=„hand“></span><form name=„form_pay_system1"action=“https://www.portmone.com.ua/gateway/" method=„post“ style=„display:none; padding: 0; margin: 0;“>

То на выходе должно быть: 303

KOET
() автор топика
Ответ на: комментарий от emulek

Подходит для первого варианта: <td colspan=«3»><b style=«color: red;»>Долг</b> 199 РіСЂРЅ. &nbspОплатить СЃСѓРјРјСѓ <input size='5' type='number' id='paymentSum' value='199' /> РіСЂРЅ. через:<span style=«vertical-align:middle;»><img src=«img/portmone.png» title=«Р˜СЃРїРѕР»СЊР·РѕРІР°С‚СЊ Portmone.comИнтернет)„onclick=„use_online_pay('form_pay_system1','bill_amount');“ class=„hand“></span><form name=„form_pay_system1"action=“https://www.portmone.com.ua/gateway/" method=„post“ style=„display:none; padding: 0; margin: 0;“>

А для второго: <tr><td align=„right“ colspan=„2“ style=„font: bold 9px Arial, Helvetica, sans-serif;“><nobr><span style=„color:#30AF01“>631 РњР‘</span></nobr>&nbsp</td>

Нет, но и за это спасибо. Я думал что-то универсальное найти, чтоб в обоих случаях работало, ну да ладно. Спасибо и на этом.

KOET
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.