How to sort an array of strings in Bash

In Bash, sorting an array of strings can be a useful operation to organize data alphabetically or according to specific criteria. In this article, we’ll explore different ways to sort an array of strings using Bash commands.

Using the sort Command

The simplest way to sort an array of strings in Bash is by using the sort command. Here’s an example:

#!/bin/bash

# Declare an array of strings
array=("mela" "banana" "arancia" "uva" "ciliegia")

# Sort the array and assign it to a new array
sorted_array=( $(printf "%s\n" "${array[@]}" | sort) )

# Print the sorted array
echo "Sorted array: ${sorted_array[@]}"

In this script:

  • We use printf to print each element of the array on a new line.
  • The sort command sorts the lines alphabetically.
  • The results are reassigned to a new array.

Reverse Sorting

To perform a reverse sort (from Z to A), you can use the -r option with the sort command:

sorted_array=( $(printf "%s\n" "${array[@]}" | sort -r) )

Case-Insensitive Sorting

If you want a sort that ignores case differences, you can use the -f option:

sorted_array=( $(printf "%s\n" "${array[@]}" | sort -f) )

Numeric Sorting

If the array contains numbers represented as strings and you want to sort them numerically, you can use the -n option:

numeric_array=("10" "2" "33" "5")
sorted_numeric_array=( $(printf "%s\n" "${numeric_array[@]}" | sort -n) )

echo "Sorted numeric array: ${sorted_numeric_array[@]}"

Conclusion

The sort command is a powerful and flexible method for sorting string arrays in Bash. Thanks to the various available options, you can customize the sorting according to your needs.

Back to top