在shell中使用lynx,存储转储以获得更多grep

时间:2013-08-21 09:16:21

标签: bash lynx

是否可以在bash脚本中执行诸如使用lynx将网页内容作为浏览器进行操作 将它存储在一个变量中(实际上只有一个网页访问该页面),然后用很多grep来提取信息?

我尝试过这样的事情:

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

但我在任务,使用引号,反引号等之间陷入困境。

如果有人有另一个没有lynx的解决方案:我正在搜索lynx --dump这样的“浏览器呈现视图”(而不是wget),最好避免在系统上创建文件(或者如果这是唯一的解决方案,我该如何继续删除这个临时文件?)

谢谢你和最好的问候

1 个答案:

答案 0 :(得分:5)

修复你的代码。 我想回答这个问题

  

但我在任务,使用引号,反引号等之间陷入困境。

  • 请选择$()而不是反引号,通常没有区别,但$()的一大优势是可以嵌套它。另外在某些字体中,反引号可能看起来与单引号相似,如果将代码粘贴到某些网站,它可能会中断,因此$()更稳定。
  • 始终将" "放在参数周围。示例:echo "$myvar"wget "$myurl"
  • 使用[[ ]]代替[[是位于/ bin / test中的test命令(和/ bin / [通常符号链接到/ bin / test),而[[ ]]是bash语法。 (但似乎[现在是一个bash内置]
  • 请勿使用let进行数学运算,请使用(( ))。示例:(( a = 5 * b ))echo $(( a / 20 ))
  • 使用(( ))进行数学比较而不是[[ ]],因为它允许直观的<= < > >=运算符。示例:if (( a <= b )); then ...而不是if [[ $a -le $b ]]; then ...
  • 首选bash字符串操作,而不是tr和其他实用程序。 Some of themA 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")