2013-08-21 3 views
2

возможно в сценарии bash сделать что-то вроде получения содержимого веб-страницы в качестве браузера с помощью lynx хранить его в переменной (фактически только в одном сетевом доступе к странице) и затем делать много grep для извлечения информации?Использование lynx в оболочке, сохранение дампа для дальнейшего grep

я пытался что-то вроде:

content="$(lynx -dump -nolist $url')" 
var1=`cat "$content" | grep myre1` 
var2=`cat "$content" | grep myre2` 

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

если кто-то есть другое решение без рыси: я ищу что-то вроде lynx --dump, который «браузер вида рендеринга» (и не wget) и желательно бы избежать создания файла на системе (или, если это является единственным решением, как может я продолжить, чтобы удалить этот временный файл?)

спасибо и и наилучшими пожеланиями

+0

ли не раньше, чем знать о рыси. Спасибо :) –

+0

'lynx -dump' - отличная возможность, также подумайте о' lynx -useragent = "Mozilla/5.0", который может быть полезен ... я не знаю, есть ли другие альтернативы для просмотра веб-страниц в "человеческих «текстовый режим так легко. – user1340802

+0

у вас есть бродячая одиночная цитата после $ url – msouth

ответ

4

Просто фиксированный код. И я хочу ответить на этот вопрос

но я испортил между назначениями, используя кавычки, обратные кавычки и так далее.

  • Пожалуйста предпочитают $() вместо обратные кавычки, как правило, нет никакой разницы, но одно большое преимущество в том, что $() вы можете вложить его. Также в некоторых шрифтах обратные ссылки могут выглядеть похожими на одинарные кавычки, и если вы вставляете свой код на некоторые сайты, он может сломаться, поэтому $() более стабилен.
  • Всегда размещайте " " вокруг параметров. Примеры: echo "$myvar", wget "$myurl"
  • Использовать [[ ]] вместо [. [ - это команда test, расположенная в/bin/test (и/bin/[обычно символически связана с/bin/test), а [[ ]] - синтаксис bash. (Однако кажется, что это [bash builtin now)
  • Не использовать let для математических операций, используйте (()). Примеры: ((a = 5 * b)), echo $((a/20))
  • Используйте (()) для математических сравнений вместо [[ ]], поскольку она позволяет интуитивные <=<>=> операторов. Пример: if ((a <= b)); then ... вместо if [[ $a -le $b ]]; then ...
  • Предпочитаете использование команд bash вместо tr и других утилит. Some of them и A bit more. Пример: используйте ${myvar^^} вместо echo "$myvar" | tr a-z A-Z
  • Большинство команд позволяют указать имя файла. Например, не используйте cat filename | grep somestr, вместо этого используйте grep somestr filename.

Ваш фиксированный код:

content=$(lynx -dump -nolist "$url") 
var1=$(grep myre1 <<< "$content") 
var2=$(grep myre2 <<< "$content") 
+0

поблагодарить u за этот интересный ответ :) Узнайте много вещей здесь! – user1340802

+0

, пожалуйста, можете ли вы разместить пример строки с помощью '(())' и '[[]]'? Выполнение 'echo ((4 + 5))' или 'print [[4 <= 5]]' не работает для меня – user1340802

+0

Конечно. Я все еще редактирую его. –

Смежные вопросы