Macos 通过OSX终端从.html中为“提取值”;卷曲;在单个脚本中提交

Macos 通过OSX终端从.html中为“提取值”;卷曲;在单个脚本中提交,macos,bash,curl,Macos,Bash,Curl,如何通过终端提取html页面下一行的变量值,然后在同一脚本中通过“curl-d”提交它 <input type="hidden" name="au_pxytimetag" value="1234567890"> 编辑:如何在单个脚本中将提取的值传递到“curl-d”命令?可能是个愚蠢的问题,但我完全不知道=0)您可以尝试: grep au_pxytimetag input.html | sed "s/.* value=\"\(.*\)\".*/\1/" 编辑: 如果

如何通过终端提取html页面下一行的变量值,然后在同一脚本中通过“curl-d”提交它

     <input type="hidden" name="au_pxytimetag" value="1234567890">

编辑:如何在单个脚本中将提取的值传递到“curl-d”命令?可能是个愚蠢的问题,但我完全不知道=0)

您可以尝试:

grep au_pxytimetag input.html | sed "s/.* value=\"\(.*\)\".*/\1/"
编辑:

如果在脚本中需要此选项:

#!/bin/bash
DATA=$(grep au_pxytimetag input.html | sed "s/.* value=\"\(.*\)\".*/\1/")
curl http://example.com -d $DATA

您可以使用
xmllint

value=$(xmllint --html --xpath "string(//input[@name='au_pxytimetag']/@value)" index.html)
你可以用我的:

但是你不需要


您可以将网页上第一个表单中的所有值发送到表单操作,然后可以从下一页查询内容

编辑:

我无法从你的问题中看出你到底想做什么。我最初以为您试图从文件中提取变量,但似乎您实际上想首先获取该文件,其次提取变量,第三,将变量用于其他用途。。。因此,让我们讨论一下这些步骤中的每一步:

首先,您想使用
curl
抓取一个页面,所以您可以这样做

curl www.some.where.com
页面将在终端上输出。但实际上,你想在那个页面上搜索一些东西,所以你需要这样做

curl www.some.where.com | awk something

但是你想把它放到一个变量中,所以你需要这样做

var=$(curl www.some.where.com | awk something)
curl -d "param1=$var" http://some.url.com/somewhere

我想你需要的实际命令是

var=$(curl www.some.where.com | awk -F\" '/au_pxytimetag/{print $(NF-1)}')
然后,您希望将变量
var
用于另一个
curl
操作,因此需要执行以下操作

var=$(curl www.some.where.com | awk something)
curl -d "param1=$var" http://some.url.com/somewhere
原始答案

我会像这样使用
awk

var=$(awk -F\" '/au_pxytimetag/{print $(NF-1)}' yourfile)
使用
作为字段分隔符,在包含
au\u pxytimetag
的行中取倒数第二个字段

那么你可以这样使用它

curl -d "param1=$var&param2=SomethingElse" http://some.url.com/somewhere

当我使用本地html文件时,它可以工作,但是当通过http://(awk:无法打开文件)(grep:http://b.l.a.h.html:没有这样的文件或目录)访问该文件时,您和@Herson的命令都找不到该文件。有什么想法吗?我的评论的答案是var=$(curl | awk-F\'/au|pxytimetag/{print$(NF-1)})
var=$(awk -F\" '/au_pxytimetag/{print $(NF-1)}' yourfile)
curl -d "param1=$var&param2=SomethingElse" http://some.url.com/somewhere