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 like を使用して変数に格納したい

ip=172.16.1.127
mac=xyz

上記の文字列で sed を使用するにはどうすればよいですか?

私はこのように使用してみました

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

しかし、それはデータを提供していません。

4

2 に答える 2

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 に答える
0

おそらく、最初に左側をトリミングし、次に右側をトリミングする 2 つのステップで行う方が簡単です。

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

これにより:
ステップ 1: "
 mac=" まで (および含む) は何も  置換されません。

于 2013-06-10T10:38:06.603 に答える