Como posso obter os itens exclusivos em uma matriz bash?

1

Se eu tiver essa matriz

arra[0]='Debian'
arra[1]='Debian'
arra[2]='Ubuntu'
arra[3]='Suse'

Como posso estoque em uma nova matriz Debian, Ubuntu e Suse apenas? assim

new[0]='Debian'
new[1]='Ubuntu'
new[2]='Suse'
    
por user417462 10.02.2015 / 14:07

1 resposta

1

Uma resposta de trabalho:

eval newArray=($(for i in  "${arra[@]}" ; do  echo "\"$i\"" ; done | sort -u))

Funciona com espaços nos elementos da matriz, como em 'Red Hat' : você precisa imprimir as cotações "" em torno do valor da variável ("\"$i\"") e eval o resultado.

Uma alternativa mais elegante

eval newArray=($(printf "%q\n" "${arra[@]}" | sort -u))

onde o formato %q é necessário para citar a saída de printf .

    
por 10.02.2015 / 18:11

Tags