使用SH / BASH将变量分成两部分

时间:2016-09-23 15:16:00

标签: bash sh

我有一个我从cat得到的号码:"(number1,number2)"我想将值拆分为两个不同的变量。

1 个答案:

答案 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数组中检索它们。正则表达式通过忽略字符串开头和结尾处的()来提取组,并找到分隔它们的,