我有这个数据
&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'
但它没有提供任何数据。
答案 0 :(得分:0)
如果您的数据不包含任何特殊字符,则可以使用以下内容:
eval $( echo "$QUERY_STRING" | sed 's/&/ /g' )
这会直接从查询字符串创建变量mac=1E-30-6C-A2-47-5F
等等。但是要小心,因为攻击者可能会请求包含以下查询字符串的页面:
&IFS=.&PWD=/&UID=0
答案 1 :(得分:0)
可能更容易分两步完成,首先修剪左侧,然后修剪右侧。
sed 's/.*mac=//' | sed 's/\&.*//'
这将:
第1步:
更换任何东西直到(并包括)“mac =”没有任何东西
第2步:
在(并包括)它遇到的第一个&符号之后替换任何东西。