Маленький однострочник на баше для получения погоды в консольку (на 3 дня)
wget -q -O - http://wap.gismeteo.ru/26702.wml |\ sed -e '/^<br\/>.*\|<\/\?p>\|<a href.*\|(c).*\|.*wapstart.ru.*\|.*wml.*\|.*?xml.*\|<\/card>/d;s/^.*title="\(.*\)">/\1\n\n/;s/<br\/>//g;s/<img src=.*alt="\(.*\)"\/> <b>\(.*\) .*<\/b>/\1 - \2/g'
Чтобы получить погоду на свой город, идем по линку http://wap.gismeteo.ru/, жмем линк "Другие города", дальше находим свой город и смотрим его адрес, для Калининграда это http://wap.gismeteo.ru/wap2/towns/26702.wap2, вот тут нам нужно число, которое стоит перед ".wap2". Запоминаем его и вписываем в скрипт перед ".wml". Все :)
ЗЫЖ Знаю, что скрипт можно написать и лучше, но писал его "на коленке" за минут 15, главное чтобы работало. Да и не для себя делал, а по просьбе одного знакомого, как простенький пример.
(2 голоса)
- 2013 просмотров
Страница для печати


Совет отличный! Спасибо тебе. Сделай еще пожалуйста, на подобие таких
Не понял. Чего сделать?
А вот так - в псевдографическом окошке (внимание, окошко с прокруткой!!):
А вот так - выкидывает картинкой (только прям сейчас не работает - на Гисметео перенос площадки и этот сервис пока что поломан):
Можно зарядить в ярлычок на Рабочем столе.
Прикольно :)
lynx -nolist -dump http://wap.gismeteo.ru/wap2/towns/26702.wap2Круто :)
Что-то я совсем забыл про него :(
Немного доделал :)
Я вот только одного не понял... Почему sed в этом примере у меня работал в "не жадном" режиме, т.е. с каждой строчкой, не выходя за ее пределы. Кто знает?
сед работает строчка за строчкой. что бы обрабатывать весь файл нужно прилагать усилия.
PS
осталось dzen2 прикрутить и будет полный фарш Ж:-)
Почему-то раньше, для других файлов, если я писал например "sed -e 's/^.*$//'", то он весть текст очищал, т.е. просто все стирал. В этом случае этого не происходит.
Даже "sed -e '/^ *$/d'" и "sed -e '/^$/d'" пустые строки почему-то не удаляют. Никак не могу понять, почему (GNU sed версия 4.1.5).
что бы работать со всем файлом как с одной строкой разбитой \n делают так:
Не знал, спасибо :)
> Даже "sed -e '/^ *$/d'" и "sed -e '/^$/d'" пустые строки почему-то не удаляют. Никак не могу понять, почему (GNU sed версия 4.1.5).
всё нормально удаляется, если пустые строки из одних пробелов состоят, а если tab
может проблема изза перевода строки, если виндовые переводы строк \r\n то акие проблемы могут быть.
посмотри hex dump. если там видно 0a 0d, то это виндовый перевод строк.
тогда так
Да, ты прав, спасибо )
В том-то и дело, что все нормально должно удаляться, но в этом случае у меня не хочет удаляться, делаю так:
вместо
PS
\t - только в gnu sed
Хм... Логично :)
> Почему-то раньше, для других файлов, если я писал например "sed -e 's/^.*$//'", то он весть текст очищал
дык, каждую строку если почистить получится пустой файл
Дык, присмотрись к команде... Эта команда не все совпадения будет чистить, а только первое. Значит должна только первую строчку подчистить.
Вот разница, сравнивай:
"Первое вхождение" и "все вхождения" -- это в рамках одной строки, а не одного файла, вы просто позабыли. Сравните
cal | sed 's/1/-/'иcal | sed 's/1/-/g'Действительно забыл. Умываю руки :)
Отправить комментарий