The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Поиск текста"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Поиск текста"  +/
Сообщение от Djeck on 16-Янв-14, 22:42 
test
<div>uyiuyewrwuriuo eerer rwerw rwerw<> <a href="index.html">shuba 28900 rub.</a>
</div>

sh
#!/bin/bash
cat test | sed -r 's/^.*uba ([0-9]+) rub.*$/\1/'

Запускаю и вижу:
28900
</div>

А нужно получить только цифру 28900
А получается что есть цифра и хвост за ней, что не так в регулярке? Почему вылезает </div> ?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Поиск текста"  +/
Сообщение от Led (ok) on 17-Янв-14, 03:22 
> А получается что есть цифра и хвост за ней, что не так
> в регулярке? Почему вылезает </div> ?

man sed

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Поиск текста"  +/
Сообщение от pavel_simple (ok) on 17-Янв-14, 09:02 
>[оверквотинг удален]
> </div>
> sh
> #!/bin/bash
> cat test | sed -r 's/^.*uba ([0-9]+) rub.*$/\1/'
> Запускаю и вижу:
> 28900
> </div>
> А нужно получить только цифру 28900
> А получается что есть цифра и хвост за ней, что не так
> в регулярке? Почему вылезает </div> ?

man xmlstarlet

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Поиск текста"  +/
Сообщение от Andrey Mitrofanov on 17-Янв-14, 09:21 
>> в регулярке? Почему вылезает </div> ?
> man xmlstarlet

-bash: xmlstarlet: команда не найдена

Совсем уже со своим xml. Если не выстрелил grep, потом не выстрелил sed, то awk -f \< '...' и не балуйся.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Поиск текста"  +/
Сообщение от pavel_simple (ok) on 17-Янв-14, 09:49 
>>> в регулярке? Почему вылезает </div> ?
>> man xmlstarlet
> -bash: xmlstarlet: команда не найдена
> Совсем уже со своим xml. Если не выстрелил grep, потом не выстрелил
> sed, то awk -f \< '...' и не балуйся.

человекам иногда нужно давать такие иyструменты чтобы оне поменьше думали -- а то у них перегруз случается раньше чем минимальный опыт.

в мануале что по sed что по awk многа букав -- разучались люди читать.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

3. "Поиск текста"  +/
Сообщение от Andrey Mitrofanov on 17-Янв-14, 09:18 
> <div>uyiuyewrwuriuo eerer rwerw rwerw<> <a href="index.html">shuba 28900 rub.</a>
> </div>
> cat test | sed -r 's/^.*uba ([0-9]+) rub.*$/\1/'

Следи за руками:

<test sed -nr 's/^.*uba ([0-9]+) rub.*$/\1/p'

> Запускаю и вижу:
> 28900
> </div>
> А нужно получить только цифру 28900

Во-первых, _число, а не цЫфру.

> А получается что есть цифра и хвост за ней, что не так
> в регулярке? Почему вылезает </div> ?

А во-вторых, ман сед же.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Поиск текста"  +1 +/
Сообщение от pavel_simple (ok) on 17-Янв-14, 09:50 
> Во-первых, _число, а не цЫфру.

он ещё садик не закончил -- а ты ему про маны.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

8. "Поиск текста"  –1 +/
Сообщение от Djeck on 17-Янв-14, 13:05 
> Следи за руками:
> <test sed -nr 's/^.*uba ([0-9]+) rub.*$/\1/p'

волшебник! шаман! спасибо!
можно несколько вопросиков?

значок "<" перед test что означает?
и в конце /p что значит?

маны читал. про sed тоже читал. ну не доходит до меня значение ключей -n и -r
-r, --regexp-extended
использование в скрипте расширенных регулярных выражений.
-e script, --expression=script
добавление скрипта в исполняемые команды

сталкнулся еще с такой проблемой. страница html (оригинал) в кодировке 1251. а у меня пингвин utf8.

пробую так:
<http.txt | iconv -f cp1251 | sed -nr 's/^.*уба ([0-9]+) руб.*$/\1/p'

и ни как не поддается зверь!


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

9. "Поиск текста"  +/
Сообщение от pavlinux (ok) on 17-Янв-14, 16:54 
> значок "<" перед test что означает?

cat test |

> и в конце /p что значит?

print

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Поиск текста"  +/
Сообщение от михалыч (ok) on 18-Янв-14, 09:00 
> пробую так:
> <http.txt | iconv -f cp1251 | sed -nr 's/^.*уба ([0-9]+) руб.*$/\1/p'
> и ни как не поддается зверь!

За ненадобностью, нет смысла конвертировать цифры, ибо нужны только они.
sed -nr 's/^.* ([0-9]*) .*$/\1/p' test

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

12. "Поиск текста"  +/
Сообщение от Djeck on 20-Янв-14, 11:07 
>> пробую так:
>> <http.txt | iconv -f cp1251 | sed -nr 's/^.*уба ([0-9]+) руб.*$/\1/p'
>> и ни как не поддается зверь!
> За ненадобностью, нет смысла конвертировать цифры, ибо нужны только они.
> sed -nr 's/^.* ([0-9]*) .*$/\1/p' test

цифры должны относиться к чему то например к "Шуба" а не к сапогам.
задача была выцепить цену "Шуба". мы ищем "Шуба" и выдергиваем цену. Слова "Шуба" унас в 1251 соответвственно нужна перекодировка.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

13. "Поиск текста"  +/
Сообщение от михалыч (ok) on 20-Янв-14, 12:01 
> цифры должны относиться к чему то например к "Шуба" а не к сапогам.
> задача была выцепить цену "Шуба". мы ищем "Шуба" и выдергиваем цену.
> Слова "Шуба" унас в 1251 соответвственно нужна перекодировка.

iconv -f cp1251 http.txt | sed -nr 's/^.*уба ([0-9]+) руб.*$/\1/p'

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

11. "Поиск текста"  +/
Сообщение от Andrey Mitrofanov on 18-Янв-14, 10:52 
>> <test sed -nr 's/^.*uba ([0-9]+) rub.*$/\1/p'
> значок "<" перед test что означает?

то же, что и всегда, перенаправление в/в

> и в конце> пробую так:
> <http.txt | iconv -f cp1251 | sed -nr 's/^.*уба ([0-9]+) руб.*$/\1/p'
> и ни как не поддается зверь!

<file command -option1  -option2  -option3

это то же самое (чуть нетрадиционно записанное, но вызвавшее ошибку выше), что и любое из

command -option1  -option2  -option3 <file
command -option1  -option2 <file -option3
command <file -option1  -option2  -option3

потому, что перенаправление в/в и опции ком.строки парсят и/или обрабатывают разными программами в разное время

бессмысленно (хотя ошибки не даст, вроде) следующее

command -optionA -optionB -optionC | command2 <file -option1  -option2  -option3

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

7. "Поиск текста"  +1 +/
Сообщение от михалыч (ok) on 17-Янв-14, 10:31 
> А нужно получить только цифру 28900
> А получается что есть цифра и хвост за ней, что не так
> в регулярке? Почему вылезает </div> ?

Короче, Склифосовский!
sed 's/[^0-9]*//g' test
perl -pe 's/[^0-9]+//g' test

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру