0

我有这个数据

&mac=1E-30-6C-A2-47-5F&ip=172.16.1.127&msk=255.255.255.0&gw=172.16.1.1&pdns=0.0.0.0&sdns=0.0.0.0&Speed=0&PortNo=10001&PerMatFram=0&ComPort=0

我想提取数据字符串并将其存储在使用 sed commond 之类的变量中

ip=172.16.1.127
mac=xyz

如何将 sed 与上述字符串一起使用?

我试过这样使用

IP=`echo "$QUERY_STRING" | sed -n '/&ip=/,/&)/g'

但它没有提供任何数据。

4

2 回答 2

0

可能更容易分两步完成,首先修剪左侧,然后修剪右侧。

sed 's/.*mac=//' | sed 's/\&.*//'

这将:
第 1 步:
 将“mac=”之前(包括)之前的任何内容替换为空
第 2 步:
 将遇到的第一个与号 (&) 之后(包括)之后的任何内容替换为空。

于 2013-06-10T10:38:06.603 回答
0

如果您的数据不包含任何特殊字符,则可以使用以下内容:

eval $( echo "$QUERY_STRING" | sed 's/&/ /g' )

这将直接从查询字符串mac=1E-30-6C-A2-47-5F等创建变量。但是要小心,因为攻击者可能会请求具有以下查询字符串的页面:

&IFS=.&PWD=/&UID=0

另请参阅如何从 bash CGI 脚本解析 $QUERY_STRING

于 2013-06-10T10:32:34.007 回答