2 votes

Comment puis-je obtenir les éléments uniques dans un tableau bash ?

Si j'ai ce tableau

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

Comment puis-je stocker dans un nouveau tableau uniquement Debian, Ubuntu et Suse ? comme ceci

new[0]='Debian'
new[1]='Ubuntu'
new[2]='Suse'

1voto

Hastur Points 17791

Une réponse qui fonctionne :

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

Il fonctionne avec les espaces dans les éléments de votre tableau comme dans 'Red Hat' : vous devez imprimer une citation "" autour de votre valeur variable ("\"$i\"") et eval le résultat.

Une alternative plus élégante

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

où le format %q est nécessaire pour citer la sortie de printf .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X