我有一个变量:
string="ABC400p2q4".
我需要如何将ABC400
和p2q4
分开。我需要以这样一种方式将它们分离成两个变量,以便最终得到以下结果:
echo $var1
ABC400
echo $var2
p2q4
ABC可以替换为任何字母;400可以替换为其他任何数字;但是p
和q
是固定的,而2和4也可以被替换为任何数字。
不需要基于正则表达式模式进行分割,因为它们是固定长度的子字符串。在纯 bash
中,您可以这样做:
$ string="ABC400p2q4"
$ var1=${string:0:6}
$ var2=${string:6}
$ echo $var1
ABC400
$ echo $var2
p2q4
使用 bash 和特殊的 BASH_REMATCH
数组(非固定长度):
$ string='ABC400p2q4'
$ [[ $string =~ ^([a-zA-Z]+[0-9]+)(.*) ]]
$ echo ${BASH_REMATCH[1]}
ABC400
$ echo ${BASH_REMATCH[2]}
p2q4
sed -r 's/([0-9])p/\1 p/'
- Kent$ string="ABC400p2q4"
$ var1=$( expr match "$string" '\(.{6}\)' )
$ var2=$( expr match "$string" '.*\(.{4}\)' )
将正则表达式替换为实际需要的内容。
var1 = ABC400; var2 = p2q4
,完成了任务,没有任何麻烦。 - Jonathan Leffler