Ordenar matriz en Bash

MD Aminul Islam 20 junio 2023
  1. Use Bubble Sort para ordenar la matriz en Bash
  2. Use la palabra clave readarray para ordenar la matriz en Bash
Ordenar matriz en Bash

Ordenar arreglos es una tarea muy común para cualquier lenguaje de programación. En un script Bash, también podemos hacer esta tarea de dos formas diferentes.

El primero usa cualquier algoritmo de clasificación y el segundo usa una palabra clave integrada en el script Bash llamada readarray. Este artículo mostrará cómo podemos ordenar una matriz en el script Bash.

Además, veremos algunos ejemplos con explicaciones para facilitar el tema.

Use Bubble Sort para ordenar la matriz en Bash

En un script de Bash, puede ordenar una matriz utilizando cualquier algoritmo de clasificación, como la clasificación de burbujas, la clasificación de combinación, etc. En nuestro ejemplo a continuación, implementamos una clasificación de burbujas para clasificar una matriz.

El código para nuestro ejemplo será como el siguiente.

MyArray=(9 8 20 10 15)

echo "The original array is:"
echo ${MyArray[*]}

# We implemented the bubble sort here.
for ((i = 0; i<5; i++))
do

    for((j = 0; j<5-i-1; j++))
    do

        if [ ${MyArray[j]} -gt ${MyArray[$((j+1))]} ]
        then
            # swap
            temp=${MyArray[j]}
            MyArray[$j]=${MyArray[$((j+1))]}
            MyArray[$((j+1))]=$temp
        fi
    done
done

echo "The sorted array is:"
echo ${MyArray[*]}

Expliquemos el ejemplo anterior línea por línea.

  1. Primero, declaramos un nombre de matriz MyArray.
  2. Después de eso, mostramos la matriz con la línea echo ${MyArray[*]}.
  3. Después de eso, creamos dos bucles e implementamos la ordenación de burbujas. Dentro de estos bucles, creamos una condición que determina si el elemento actual es mayor que el siguiente.
  4. Si la condición se vuelve “verdadera”, entonces realizamos una operación de intercambio entre estos dos elementos de la matriz.
  5. Por último, solo mostramos la matriz cuando se realizó la clasificación. Cuando ejecute el programa anterior, obtendrá un resultado como el siguiente.
The original array is:
9 8 20 10 15
The sorted array is:
8 9 10 15 20

Use la palabra clave readarray para ordenar la matriz en Bash

Suponga que tiene una matriz que contiene una combinación de caracteres alfabéticos y numéricos. Para ordenar esta matriz, debe encontrar diferentes formas.

Para realizar la clasificación en esta matriz, debe comparar el valor ASCII del carácter.

Una palabra clave incorporada en un script Bash le permite hacer esto en una sola línea de código. La palabra clave es readarray.

En nuestro ejemplo a continuación, creamos una matriz que combina caracteres alfabéticos y numéricos. Después de ordenar la matriz usando la palabra clave readarray, mostramos la matriz ordenada.

El código para nuestro ejemplo será como el siguiente.

MyArray=(n a c b 6 7 5)
readarray -t MyArray < <(printf '%s\n' "${MyArray[@]}" | sort)
echo "The sorted list is: ${MyArray[*]}"

Después de ejecutar el script, obtendrá un resultado como el que se muestra a continuación.

The sorted list is: 5 6 7 a b c n

Tenga en cuenta que todo el código utilizado en este artículo está escrito en Bash. Solo funcionará en el entorno Linux Shell.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

Artículo relacionado - Bash Array