GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer un tableau d'éléments uniques à partir d'une chaîne/tableau dans Bash ?

Si j'ai une chaîne "1 2 3 2 1" - ou un tableau [1,2,3,2,1] - comment puis-je sélectionner les valeurs uniques, c'est-à-dire

"1 2 3 2 1" produces "1 2 3" 

ou

[1,2,3,2,1] produces [1,2,3]

Semblable à uniq mais uniq semble fonctionner sur des lignes entières, pas sur des motifs à l'intérieur d'une ligne…

Réponse acceptée :

Avec GNU awk (cela conserve également la commande d'origine)

printf '%sn' "1 2 3 2 1" | awk -v RS='[[:space:]]+' '!a[$0]++{printf "%s%s", $0, RT}'
1 2 3 

Pour read dans un bash tableau

read -ra arr<<<$(printf '%sn' "1 2 3 2 1" |
 awk -v RS='[[:space:]]+' '!a[$0]++{printf "%s%s", $0, RT}')
printf "%sn"  "${arr[@]}"
1
2
3

Linux
  1. Analyser un champ d'un tableau Json dans un tableau Bash ?

  2. `declare -a A` crée-t-il un tableau vide `a` dans Bash ?

  3. Bash tableau de tableaux?

  4. Tableaux bash avec exemples

  5. Comment puis-je obtenir des valeurs uniques à partir d'un tableau dans Bash ?

Bash break :comment sortir d'une boucle

Comment créer des alias Bash

Tableaux bash

Tableau associatif dans Bash

Bash Scripting - Tableau indexé expliqué avec des exemples

Extraire les chemins manquants du tableau bash de chemins