我有一些这样的字符串:
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] 删除。
我来说两句