从字符串中提取元组元素

时间:2013-09-05 02:29:26

标签: bash

假设我有一个以下格式的字符串:

(x1,y1,z1) (x2,y2,z2) (x3,y3,z3)

-99< = xiyizi< = 99

获取x1y1的最简单方法是什么?

我尝试了以下哪个有效,但我认为我的方法不够优雅。

string="(x1,y1,z1) (x2,y2,z2) (x3,y3,z3)"
x1=( $(echo $string | cut -d"," -f1 | cut -d"(" -f2) )

2 个答案:

答案 0 :(得分:3)

echo '(x1,y1,z1) (x2,y2,z2) (x3,y3,z3)' | awk -F'[(,]' '{print $2, $3}'

答案 1 :(得分:2)

不需要awk或任何其他工具,bash可以处理它:

string='(x1,y1,z1) (x2,y2,z2) (x3,y3,z3)'

IFS=',(' read _ x1 y1 _ <<< "$string"
echo "$x1" # prints x1
echo "$y1" # prints y1