2013-09-03 2 views
0

Предположим, что у меня есть массив, где каждый элемент в массиве в следующем формате:Попадая определенные столбцы в Баш

someText (x1,y1,z1) (x2,y2,z2) (x3,y2,z3) KEY 

Каков подход для создания нового массива, где находится элемент в новом массиве является только 1-й и последний столбец предыдущего массива?

ответ

3

Вы можете сделать что-то вроде этого (где OLDARRAY - это предыдущий массив, а NEWARRAY - новый).

NEWARRAY=() 
for I in "${!OLDARRAY[@]}"; do 
    IFS=$' ' read -ra T <<< "${OLDARRAY[I]}" 
    NEWARRAY[I]="${T[0]} ${T[@]:(-1)}" 
done 

Пример вывода:

> set | grep ^NEWARRAY 
NEWARRAY=([0]="someText KEY" [1]="someText2 KEY2") 
0

Это, как вы можете получить первый и последний элемент вашей строки в массиве:

echo "someText (x1,y1,z1) (x2,y2,z2) (x3,y2,z3) KEY" | rev | cut -d " " -f 1 | rev 

echo "someText (x1,y1,z1) (x2,y2,z2) (x3,y2,z3) KEY" | cut -d " " -f 1 
0
echo "someText (x1,y1,z1) (x2,y2,z2) (x3,y2,z3) KEY"|awk '{print $1,$NF}' 
+0

Это не может назначить что-нибудь к новый массив. Вместо этого ответьте @konsolebox. – tripleee

Смежные вопросы