如何使用sed命令提取数据

时间:2013-06-10 10:22:41

标签: linux sed html-lists

我有这个数据

&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'

但它没有提供任何数据。

2 个答案:

答案 0 :(得分:0)

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

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

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

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

另见How to parse $QUERY_STRING from a bash CGI script

答案 1 :(得分:0)

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

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

这将:
第1步:
更换任何东西直到(并包括)“mac =”没有任何东西 第2步:
在(并包括)它遇到的第一个&符号之后替换任何东西。