2013-09-03 2 views
0

Supposons que j'ai un tableau où chaque élément du tableau est dans le format suivant:Obtenir certaines colonnes bash

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

Quelle est l'approche pour la construction d'un nouveau tableau où est l'élément dans le nouveau tableau est seulement 1ère et dernière colonne du tableau précédent?

Répondre

3

Vous pouvez faire quelque chose comme ceci (où OLDARRAY est le tableau précédent et NEWARRAY est le nouveau).

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

Exemple de sortie:

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

Voici comment vous pouvez obtenir d'abord et dernier élément de votre chaîne dans le tableau:

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

Ce ne céder quoi que ce soit à un nouveau tableau. Voir @konsolebox 'réponse à la place. – tripleee

Questions connexes