GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare una matrice di elementi unici da una stringa/array in Bash?

Se ho una stringa “1 2 3 2 1” – o un array [1,2,3,2,1] – come posso selezionare i valori univoci, ad es.

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

o

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

Simile a uniq ma uniq sembra funzionare su linee intere, non su schemi all'interno di una linea...

Risposta accettata:

Con GNU awk (questo conserva anche l'ordine originale)

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

Per read in un bash matrice

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. Analizzare un campo da un array Json in un array Bash?

  2. `declar -a A` crea un array vuoto `a` in Bash?

  3. Bash array di array?

  4. Come dividere una stringa nello script Bash

  5. Matrici Bash con esempi

Bash break:come uscire da un loop

Come creare alias Bash

Matrici Bash

Matrice associativa in Bash

Bash Scripting – Array indicizzato spiegato con esempi

Estrai i percorsi mancanti dall'array di percorsi bash