Array in Bash sortieren

MD Aminul Islam 20 Juni 2023
  1. Verwenden Sie Bubble Sort, um Arrays in Bash zu sortieren
  2. Verwenden Sie das Schlüsselwort readarray, um das Array in Bash zu sortieren
Array in Bash sortieren

Das Sortieren von Arrays ist eine sehr häufige Aufgabe für jede Programmiersprache. In einem Bash-Skript können wir diese Aufgabe auch auf zwei verschiedene Arten erledigen.

Der erste verwendet beliebige Sortieralgorithmen und der zweite verwendet ein eingebautes Schlüsselwort im Bash-Skript namens readarray. Dieser Artikel zeigt, wie wir ein Array im Bash-Skript sortieren können.

Außerdem werden wir einige Beispiele mit Erklärungen sehen, um das Thema zu vereinfachen.

Verwenden Sie Bubble Sort, um Arrays in Bash zu sortieren

In einem Bash-Skript können Sie ein Array mit beliebigen Sortieralgorithmen wie Bubble Sort, Merge Sort usw. sortieren. In unserem Beispiel unten haben wir eine Bubble Sort zum Sortieren eines Arrays implementiert.

Der Code für unser Beispiel sieht wie folgt aus.

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[*]}

Lassen Sie uns das obige Beispiel Zeile für Zeile erklären.

  1. Zuerst haben wir einen Array-Namen MyArray deklariert.
  2. Danach haben wir das Array mit der Zeile echo ${MyArray[*]} angezeigt.
  3. Danach haben wir zwei Schleifen erstellt und die Blasensortierung implementiert. Innerhalb dieser Schleifen haben wir eine Bedingung erstellt, die feststellt, ob das aktuelle Element größer als das nächste ist.
  4. Wenn die Bedingung true wird, haben wir eine Austauschoperation zwischen diesen beiden Elementen des Arrays durchgeführt.
  5. Zuletzt haben wir gerade das Array angezeigt, als die Sortierung abgeschlossen war. Wenn Sie das obige Programm ausführen, erhalten Sie eine Ausgabe wie die folgende.
The original array is:
9 8 20 10 15
The sorted array is:
8 9 10 15 20

Verwenden Sie das Schlüsselwort readarray, um das Array in Bash zu sortieren

Angenommen, Sie haben ein Array mit einer Mischung aus alphabetischen und numerischen Zeichen. Um dieses Array zu sortieren, müssen Sie verschiedene Wege finden.

Um dieses Array zu sortieren, müssen Sie den ASCII-Wert des Zeichens vergleichen.

Ein eingebautes Schlüsselwort in einem Bash-Skript ermöglicht Ihnen dies in nur einer Codezeile. Das Schlüsselwort ist readarray.

In unserem Beispiel unten haben wir ein Array erstellt, das alphabetische und numerische Zeichen kombiniert. Nachdem wir das Array mit dem Schlüsselwort readarray sortiert hatten, zeigten wir das sortierte Array an.

Der Code für unser Beispiel sieht wie folgt aus.

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

Nach dem Ausführen des Skripts erhalten Sie eine Ausgabe wie die folgende.

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

Bitte beachten Sie, dass der gesamte in diesem Artikel verwendete Code in Bash geschrieben ist. Es funktioniert nur in der Linux Shell-Umgebung.

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

Verwandter Artikel - Bash Array