我有一个变量b
:
name=John&login=John99
John
和John99
不是常数。我想将b
的子字符串放在另一个varriable中,所以当我在bash中输入这个语句时:
echo $variable
它会打印John
echo $variable2
它会打印John99
我很感激你的帮助。
答案 0 :(得分:2)
假设您只关心纯ASCII字符而不关心实体编码:
variable=${b#*name=} # trim everything up to and including "name=" in b
variable=${variable%%"&"*} # trim everything following first "&" in variable
variable2=${b#*login=} # trim everything up to and including "login=" in b
variable2=${variable2$$"&"*} # trim everything following first "&" in variable2
或者,如果确实想要使用正则表达式,您可以按如下方式执行此操作:
re_name='name=([^$]+)([&]|$)'
[[ $b =~ $re_name ]] && variable=${BASH_REMATCH[1]}
re_login='login=([^$]+)([&]|$)'
[[ $b =~ $re_login ]] && variable2=${BASH_REMATCH[1]}
参考文献:
=~
)另外,如果你做想要进行HTML实体解码,请参阅Bash script to convert from HTML entities to characters