Мне необходимо найти некий текст на странице и сохранить его в файл используя команду вроде этой:
wget -q -O- http://name.ru | grep "Искомый текст" >> 1.txt
Проблема в том что страница в кодировке Windows-1251 и в файл 1.txt ничего не записывается, хотя "искомый тест" есть на странице.
Если выполнить команду wget -q -O- http://name.ru, то весь русский текст выглядит так :
Code:▒▒▒▒▒▒▒▒
Вариант с iconv не совсем подходит потому что на wl500gpv2 у меня не хватает места для ее установки. Может есть какой-нибудь другой способ?
Какого-нибудь другого способа без сторонних утилит нет. Поэтому для решения вашей задачи вам придётся:
- погуглить какие в линуксе есть средства перекодирования текста,
- оценить влезет ли скомпилированный\скриптованный вариант в куцый флеш wl500gpv2,
- реализовать выбранный вариант самостоятельно или с чьей-то помощью.
Не получается установить iconv из-за нехватки места (wl500gpv2).
Может быть можно подключить к роутеру флешку и установить iconv на нее?
Code:Filesystem Size Used Available Use% Mounted on rootfs 4.5M 4.5M 0 100% / /dev/root 4.5M 4.5M 0 100% / devfs 100.0K 4.0K 96.0K 4% /dev tmpfs 14.2M 280.0K 13.9M 2% /tmp
Для этого нужно переустанавливать прошивку роутера? Сейчас у меня стоит прошивка 1.9.2.7-rtn-r4330, меня все устраивает. Есть только необходимость установки iconv. Хотелось бы только воткнуть в него флешку, сказать системе что там будут храниться программы..., а как это сделать я не знаю. Буду очень благодарен если вы подскажете как мне это можно сделать.
нет, не нужно.
Например, вот так
или читайте форум
Если запускаюиз командной строки, то все работает, а если запускаю из crontab то нет. Перепробовал много разных вариантов и понял что не корректно работает именно iconv (даже если преобразую файл из одной кодировки в другую).Code:wget 'http://wl500g.info/showthread.php?30703&langid=3' -q -O- | iconv -f cp1251 | grep "русский текст"
Прописывайте полный путь до iconv.
Прописывал /opt/bin/iconv - не помогло
Действительно не помогло. Следующая подсказка: iconv -f CHARSET1 -t CHARSET2 перекодирует входную строку из кодировки CHARSET1 в кодировку CHARSET2. Пока вы работаете в терминале, для вашего сеанса определена переменная среды LANG, подсказывающая для iconv выходную кодировку. Откуда iconv может узнать выходную кодировку, работая в составе cron-задания?
Проверил еще раз, действительно работает...
p/s/ когда я пробовал различные варианты я установил локаль в начале скрипта и забыл про нее. Когда я пробовал твой вариант стояла неправильная локаль. Прошу прощенья что всех запутал, но зато теперь я знаю два рабочих способа как сделать то что я хотел. Всем кто помогал спасибо!