bash中的字符串子串

时间:2016-01-04 22:55:21

标签: regex bash substring cut

我有一个变量b

name=John&login=John99

JohnJohn99不是常数。我想将b的子字符串放在另一个varriable中,所以当我在bash中输入这个语句时:

  • echo $variable它会打印John
  • echo $variable2它会打印John99

我很感激你的帮助。

1 个答案:

答案 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