我有一个我从cat
得到的号码:"(number1,number2)"我想将值拆分为两个不同的变量。
答案 0 :(得分:1)
一行快速而肮脏的方法是使用grep
:
read -r var1 var2 < <(grep -o '[0-9]*' file.txt)
不使用外部程序(因此更快)的更健壮的方法是使用$BASH_REMATCH
:
if [[ "$(<file.txt)" =~ ^\((.*),(.*)\)$ ]]; then
var1="${BASH_REMATCH[1]}"
var2="${BASH_REMATCH[2]}"
fi
此方法的基本思想是我们将文件内容读入一个字符串(使用"$(<file.txt)"
),然后我们立即针对正则表达式(使用=~
运算符)测试该字符串。正则表达式包括两个捕获组,我们稍后从$BASH_REMATCH
数组中检索它们。正则表达式通过忽略字符串开头和结尾处的(
和)
来提取组,并找到分隔它们的,
。