重击:在数字之后提取字符串的一部分

大卫受洗

我有一些这样的字符串:

var1="string one=3423423 and something which i don't care"
var2="another bigger string=413145 and something which i don't care"
var3="the longest string ever=23442 and something which i don't care"

这些字符串是python脚本的输出(不允许触摸),我需要一种方法来提取字符串的第一部分,紧随数字之后。基本上,我的输出应该是:

"string one=3423423"
"another bigger string=413145"
"the longest string ever=23442"

如您所见,我不能使用位置或类似的东西,因为数字和字符串长度并不总是相同。我认为我需要使用正则表达式或其他东西,但我并不真正了解正则表达式。您能帮忙一个命令或其他可以做到的吗?

亚诺斯

您可以使用参数扩展,例如:

var1="string one=3423423 and something which i don't care"
name=${var1%%=*}
value=${var1#*=}
value=${value%%[^0-9]*}
echo "$name=$value"
# prints: string one=3423423

的说明${var1%%=*}

  • %% -删除最长的匹配后缀
  • = - 比赛 =
  • * -匹配一切

的说明${var1#*=}

  • # -删除最短的匹配前缀
  • * -匹配一切
  • = - 比赛 =

的说明${value%%[^0-9]*}

  • %% -删除最长的匹配后缀
  • [^0-9] -匹配任何非数字
  • * -匹配一切

要轻松地对多个值执行相同的操作,可以将此逻辑包装到一个函数中:

extract_and_print() {
    local input=$1
    local name=${input%%=*}
    local value=${input#*=}
    value=${value%%[^0-9]*}
    echo "$name=$value"
}

extract_and_print "$var1"
extract_and_print "$var2"
extract_and_print "$var3"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章