Ordenar matriz en Bash
- Use Bubble Sort para ordenar la matriz en Bash
-
Use la palabra clave
readarray
para ordenar la 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.
- Primero, declaramos un nombre de matriz
MyArray
. - Después de eso, mostramos la matriz con la línea
echo ${MyArray[*]}
. - 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.
- Si la condición se vuelve “verdadera”, entonces realizamos una operación de intercambio entre estos dos elementos de la matriz.
- 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.
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