首页 > 解决方案 > 使用 AWK 提取 HTML 表单/输入内容

问题描述

我想提取形成内容进行处理。

我已经从 CURL 得到的是mycurlcommand | grep "type=\"hidden"

<input type="hidden" name="var1" value="ABC">
<input type="hidden" name="var2" value="DEF">
<input type="hidden" name="var3" value="GHI">
<input type="hidden" name="var4" value="JKL">
<input type="hidden" name="var5" value="">

我想得到这个:

var1=ABC
var2=DEF
var3=GHI
var4=JKL
var5=

处理并再次将其传递给 CURL。我确信在 awk/cut/sed 中可以做到这一点——其他 xml 解析工具在我有限的 linux 安装(小存储)上不可用。

标签: htmlshellcurlawk

解决方案


由于您提到xml解析工具不可用,您可以使用这些解决方案。但是,如果输入模式与问题中显示的示例不同,它可能不起作用。作为奖励,这些解决方案将消除对grep问题中提到的命令的需求。

$ # use = or " characters as input field separator
$ # set = as output field separator
$ # print the required fields
$ awk -F'[="]' -v OFS='=' '/type="hidden"/{print $6, $9}' ip.txt
var1=ABC
var2=DEF
var3=GHI
var4=JKL
var5=

$ # this is useful when number of fields isn't fixed
$ # but the order has to be name followed by value
$ sed -nE '/type="hidden"/ s/.*name="([^"]*)".*value="([^"]*)".*/\1=\2/p' ip.txt
var1=ABC
var2=DEF
var3=GHI
var4=JKL
var5=

推荐阅读