GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo crear una matriz de elementos únicos a partir de una cadena/matriz en Bash?

Si tengo una cadena "1 2 3 2 1", o una matriz [1,2,3,2,1], ¿cómo puedo seleccionar los valores únicos, es decir,

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

o

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

Similar a uniq pero uniq parece funcionar en líneas completas, no en patrones dentro de una línea...

Respuesta aceptada:

Con GNU awk (esto también conserva el orden original)

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

Para read en un bash matriz

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. Bash Matriz de matrices?

  2. Matrices bash con ejemplos

  3. Matriz en Bash no encontrada

  4. ¿Cómo puedo obtener valores únicos de una matriz en Bash?

  5. Cómo declarar una matriz 2D en bash

Bash break:cómo salir de un bucle

Cómo crear alias de Bash

Arreglos bash

Matriz asociativa en Bash

Bash Scripting:matriz indexada explicada con ejemplos

cómo cambiar el valor de la matriz en bash