2013-09-05 2 views
1

Предположим, что у меня есть строка в следующем формате:извлекая кортеж элементов из строки

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

-99 < = xi, yi, zi < = 99

Что это самый простой способ получить x1 и y1?

Я пробовал следующее, которое работает, но я думаю, что мой подход не достаточно изящный.

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

ответ

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

Там нет необходимости для AWK или любой другой инструмент, Баш может справиться с этим:

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

IFS=',(' read _ x1 y1 _ <<< "$string" 
echo "$x1" # prints x1 
echo "$y1" # prints y1 
Смежные вопросы