【问题标题】:Extract text between two known strings in a web page and store in a variable提取网页中两个已知字符串之间的文本并存储在变量中
【发布时间】:2019-09-05 23:16:57
【问题描述】:

网页包含这一行:

var zx_fn = "任何可能字符的字符串";

我下载了网页,然后尝试将引号之间的部分存储在变量中

我的代码:

#!/bin/sh
url="http://www.example.com/..."
content=$(wget -q -O - $url)
var1=$(sed -n '/^var zx_fn = "$/,/^";$/p' "$content")
echo $var1

它不起作用,因为它说:

sed:无法读取

并返回整个页面内容

还有什么更适合这种情况? grep、awk 还是 sed?

这个问题已被标记为重复,但另一个问题并没有消除我的疑虑,因为我在变量存储和正则表达式方面都需要帮助。

如果我遵循该答案,代码将返回:

语法错误:重定向意外

【问题讨论】:

  • 是的,我还需要正则表达式的帮助,而且该代码不起作用,它说“语法错误:重定向意外”
  • 我认为这个问题缺乏有用的信息。您没有提供真实的 URL,您没有提供示例输入或输出,甚至没有说明分隔您尝试提取或替换的文本的两个字符串。通常,尝试解析网页的人需要标签之间的文本,但不清楚您是否正在尝试这样做。

标签: linux awk sed grep


【解决方案1】:
$ foo='var zx_fn = "string with any possible character";'
$ bar=$(sed -n 's/var zx_fn = "\([^"]*\)";$/\1/p' <<< "$foo")
$ echo "$bar"
string with any possible character

上面的“任何可能的字符”被假定为“...除了双引号”。如果它可以包含双引号,那么请告诉我们它们是如何在这些字符串中转义的,以便我们告诉您如何处理它们。

【讨论】:

  • 这行得通,我只需要将'#!/bin/sh'改为'#!/bin/bash'
猜你喜欢
  • 2013-07-25
  • 1970-01-01
  • 1970-01-01
  • 2020-11-13
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多