njo*_*dan 2 command-line grep text-processing regular-expression html
我有一个非常简单的 html 文件,里面有一个值。在这种情况下,值为 57。
<eta version="1.0"><value uri="/user/var/48/10391/0/0/12528" strValue="57" unit="%" decPlaces="0" scaleFactor="10" advTextOffset="0">572</value></eta>
Run Code Online (Sandbox Code Playgroud)
提取和写入变量的简单 bash 脚本方法是什么?有没有办法甚至不需要将 wget 放入文件作为中间步骤,这样就不需要打开和使用存储文件的文件,而是直接使用 wget?
澄清一下,我可以做一个简单的wget
,保存到文件并检查文件的值,或者是否有更增强的方法来执行wget
RAM 中的某处而不需要存储显式文件?
感谢一百万次,非常感谢诺伯特
jim*_*mij 10
您可以grep
使用以下方式提取示例中的值并将其分配给变量
$ x=$(wget -0 - 'http://foo/bar.html' | grep -Po '<value.*strValue="\K[[:digit:]]*')
$ echo $x
57
Run Code Online (Sandbox Code Playgroud)
解释:
$()
: 命令替换grep -P
: 启用 Perl 正则表达式的 grepgrep -o
: grep 只显示该行的匹配部分\K
:不要在输出中显示到目前为止匹配的任何内容wget -O -
: 将下载的文档打印到标准输出(而不是文件)但是,对于一般方法,最好对 html 代码使用专用解析器。
我不知道wget
你在说什么,但我猜你想下载该文件。如果是这样,是的,您可以下载它并解析它,无需中间临时文件:
$ value=$(wget -O - http://example.com/file.html | grep -oP 'strValue="\K[^"]+')
$ echo $value
57
Run Code Online (Sandbox Code Playgroud)