【问题标题】:Substring of string in bashbash中字符串的子字符串
【发布时间】:2016-01-04 22:55:20
【问题描述】:

我有一个变量b

name=John&login=John99

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

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

我将不胜感激。

【问题讨论】:

  • 你想做http查询解码吗?在这种情况下,使用库更合适,因为编码也使用 percentage-encoding

标签: regex bash substring cut


【解决方案1】:

假设您只关心纯 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-03
    • 2012-08-09
    • 2013-08-12
    • 2023-03-17
    • 2016-06-21
    • 2017-01-13
    • 2018-11-20
    • 1970-01-01
    相关资源
    最近更新 更多