Linux provides a lot of useful tools for system administrators. These tools give the administrator a developer power so the administrator can easily change, modify, filter, sort the data. The sort is another little but powerful tool. In this tutorial, we will look at different usage examples of the sort.
We will use following simple example file named
apple 1 good JAN grape 5 bad DEC banana 2 good MAR melon 10 bad JUN
sort Command Syntax
sort command will use following syntax.
sort [OPTION]... [FILE]... sort [OPTION]... --files0-from=F
sort Command Example
Sort can be used with file or standard input. In this example, we will sort file content according to each line start. As we see our file content is sorted alphabetically.
$ sort fruits.txt
By default, the sort is done ascending. Sometimes it can be useful to sort reverse or descending mode. This can be done like below by providing
$ sort -r fruits.txt
Add sort Command Output To File
After sort of operation, the new sorted content is printed to the standard output. One of the alternative ways to save output is writing to a file.
$ sort -r fruits.txt > reverse_fruits.txt
The sort is by default case sensitive operation which means while sorting character case upper/lower is detected and sorted accordingly. If this does not suit you it can be disabled with
$ sort -f fruits.txt
Check Specified File If Sorted
Another useful feature of the sort is to check the status of files if it is already sorted. If it is already sorted there will be no output but if it is not sorted single-line information about the disorder will be given.
$ sort -c fruits.txt
Sort Multiple Files
Sometimes data that will be sorted do not reside in a single file. Sort command does not have a native feature to use multiple files. Here other bash tools provide a solution to merge multiple files into a single standard input stream. In this example, we will
cat multiple files and redirect to the standard input of sort.
$ cat fruits.txt reverse_fruits.txt | sort
Sort By Given Column
Up to now, we have sorted our data from starting the first character of the line. Our data may be in a structured manner with columns and we may want to sort by using different columns others than the first column. This can be done with other bash tools but sort provides a simple way to do this.
$ sort -k2 fruits.txt
Sort By Multiple Columns
Sort by column is easily implemented but what will happen if we want to sort according to multiple columns. Here
-k parameter can be used again with multiple values like below. We will sort primary with column 1 and then column 3
$ sort -k2,3 fruits.txt
Sort According Numbers
Up to now sorting operation is done with the alphabet and ASCII. Detecting numbers and sorting accordingly can be done with sort. For example, in the normal sort operation 1 is lower than 10 but if we want to sort according to numeric values
-n parameter can be used as below.
$ sort -n -k2 fruits.txt
Sort By Size
While using Linux tools size information can be expressed in different way default expression method is prefixing with a metric name like
128MB etc. Sort supports this type of expression which is very good for simple sort implementations.
$ ls -lh | sort -k 5 -h
Sort By Date
Unix and Linux months are expressed like
JUN etc. Sort can support this type of month’s expression and sorting them. The moths listed to column number 4 and we will sort according to column 4 as month value with the
$ sort -k4 -M fruits.txt