Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash:两个复杂模式之间的内容-html_Html_Bash - Fatal编程技术网

Bash:两个复杂模式之间的内容-html

Bash:两个复杂模式之间的内容-html,html,bash,Html,Bash,我已经多次尝试在两个html模式之间获取数字。 无论是sed还是awk都不适合我,因为互联网上的例子太容易了,不适合我的任务 以下是我要筛选的代码: ....class="a-size-base review-text">I WANT THIS TEXT</span></div> .... …class=“a-size-base review text”>我想要这个文本。。。。 所以我需要一个命令来输出:我想要这个文本介于…review TEXT>和 你有什么线

我已经多次尝试在两个html模式之间获取数字。 无论是
sed
还是
awk
都不适合我,因为互联网上的例子太容易了,不适合我的任务

以下是我要筛选的代码:

....class="a-size-base review-text">I WANT THIS TEXT</span></div> ....
…class=“a-size-base review text”>我想要这个文本。。。。
所以我需要一个命令来输出:
我想要这个文本
介于
…review TEXT>

你有什么线索吗?谢谢你的努力和来自德国的问候


这里是简单的

假设要提取的文本不包含,我看不出这里的问题。 例如,对于POSIX REGEXP:

$ HTML_FILE=/tmp/myfile.html
$ sed -n "s/.*review-text.>\([^<]*\)<.*/\1/gp" $HTML_FILE
$HTML\u FILE=/tmp/myfile.HTML
$sed-n“s/*查看文本。>\([^Try:


tr'\n''file.html | grep-o'查看文本“>[^]**“|cut-d'>”-f2 | cut-d'请分享您的尝试,并解释它们不起作用的原因。但是像
xmllint
这样的真正的xml解析器。如果您提供html结构的更多详细信息,我们可能会帮助您编写xpath查询。Hi randomir:这是html文件代码:ibb.co/iNSDXb--谢谢您的努力!这是您发布的图像好了!请看如何写。这是我自己的解决方案:cat source.html | tr-d'| grep-o'审阅文本[^]*spandivdiv'| awk-F'审阅文本'{print$2}'| awk-F'spandivdiv'{print$1}'----这是一个来自product review链接的html源代码。我只需要查看文本本身。正如我所说,它位于这两种模式之间。使用您的命令过滤整个html文件对我不起作用…我更新了答案,从一个文件而不是单个变量中提取所有文本。我需要使用sed-E而不是-r,因为我在操作系统上不管怎样,它并没有按预期工作。sed给了我一个巨大的列表,而不是只打印两种模式之间的文本。谢谢你的努力tho@MultiF95您可以使用这个简单的正则表达式命令。它对您的链接中提供的文件有效:sed-n“s/*审阅文本。>([^Terminal说我没有正确使用tr。我在Mac上使用了tr。这是错误吗?在我的linux机器上,tr命令正常工作。我现在无法在Mac上测试它。你可以尝试任何其他工具(sed、awk)。首先,将行尾字符都改为空格,然后通过-o选项将管道输出到grep。应该可以
tr '\n' ' ' file.html | grep -o 'review-text">[^<>]*</span> *</div>' | cut -d'>' -f2 | cut -d'<' -f 1