sort command is a command line utility for sorting lines of text files. It supports sorting alphabetically, in reverse order, by number, by month and can also remove duplicates. The sort command can also sort by items not at the beginning of the line, ignore case sensitivity and return whether a file is sorted or not.
sort tool will sort lines alphabetically by default. Running
sort filename writes the contents of the
filename in alphabetical order to standard output.
Suppose a file exists with the following list of metal bands that needs to be sorted in alphabetical order. The file is saved as
Motörhead ACDC Sepultura Carcass Opeth
sort command allows us to sort the file alphabetically.
sort bands.txt ACDC Carcass Motörhead Opeth Sepultura
To sort in reverse order pass the
-r option to
sort. This will sort in reverse order and write the result to standard output.
Using the same list of metal bands from the previous example this file can be sorted in reverse order with the
sort -r bands.txt Sepultura Opeth Motörhead Carcass ACDC
To sort by number pass the
-n option to
sort. This will sort from lowest number to highest number and write the result to standard output.
Suppose a file exists with a list of items of clothing that has a number at the start of the line and needs to be sorted numerically. The file is saved as
3. Brown shoes 5. Blue tie 1. White shirt 11. Jeans 4. Underpants
-n option the file is ordered numerically.
sort -n clothes.txt 1. White shirt 3. Brown shoes 4. Underpants 5. Blue tie 11. Jeans
To sort mixed-case text pass the
-f option to
sort. This will ignore case sensitivity when sorting and write the result to standard output.
If a file has uppercase and lowercase content
sort will order uppercase first. Suppose a file exists with a list of names in a file called
Sam sally Sarah steven
By default the
sort tool will sort uppercase characters first.
sort names.txt Sam Sarah sally steven
To sort and ignore case use the
sort -f names.txt sally Sam Sarah steven
To check if a file is already sorted pass the
-c option to
sort. This will write to standard output if there are lines that are out of order.
Suppose a file exists with a list of cars called
Audi Cadillac BMW Dodge
sort tool can be used to understand if this file is sorted and which lines are out of order.
sort -c cars.txt sort: cars.txt:3: disorder: BMW
If there is no output then the file is considered to be already sorted.
To sort and remove duplicates pass the
-u option to
sort. This will write a sorted list to standard output and remove duplicates.
Suppose a file exists with a list of breakfast cereals to sort. This file contains a number of duplicates. This is saved in the file
Cornflakes Sultana Bran Weetabix Sultana Bran Cornflakes Shredded Wheat Cherrios Weetabix
By using the
-u option this file can be sorted and stripped of duplicates.
sort -u breakfast.txt Cherrios Cornflakes Shredded Wheat Sultana Bran Weetabix
To sort by month pass the
-M option to
sort. This will write a sorted list to standard output ordered by month name.
Suppose the following file exists and is saved as
February January March August September
-M option with
sort allows us to order this file.
sort -M months.txt January February March August September
To sort by items not at the beginning of the line pass the
-k option to
sort along with a number of value of the field to sort on. This will write the result to standard output.
Suppose a file exists with a list of orders that is saved as
1023 AcmeCo "Bouncey Castle" 1003 FooCo "Fluffy Toy" 1013 AcmeCo "Edible Hat" 1042 FooCo "Whoopie Cushion"
The file needs to be sorted by the name of the company that placed them. By using the
-k option and passing it a number of the key this can be achieved.
sort -k 2 orders.txt 1023 AcmeCo "Bouncey Castle" 1013 AcmeCo "Edible Hat" 1003 FooCo "Fluffy Toy" 1042 FooCo "Whoopie Cushion"
To sort by a delimiter pass the
-t option to
sort along with the delimiter value. For a CSV file this would be
,. This can be combined with the
-k option to sort on fields within a CSV. The result will be written to standard output.
Suppose a file exists with a list of cheeses that is saved as
2,Maroilles,1.13 3,Stinking Bishop,1.65 1,Brie de Meaux,1.99 4,Munster,1.29
The file may be sorted by the name of the cheese using a combination of the
sort -k 2 -t , cheese.csv 2,Maroilles,1.13 3,Stinking Bishop,1.65 1,Brie de Meaux,1.99 4,Munster,1.29
To sort on the most expensive cheese the numeric and reverse options can be used.
sort -k 3 -t , -n -r cheese.csv 2,Maroilles,1.13 3,Stinking Bishop,1.65 1,Brie de Meaux,1.99 4,Munster,1.29
Have an update or suggestion for this article? You can edit it here and send me a pull request.
Build your own Vim statusline
Statuslines in Vim are not hard to create. Making your own means one less dependency in your life.
Custom Vim Bindings in tmux 2.4
tmux 2.4 made a significant change to key bindings. Here is how to support custom keybindings for versions before and after tmux 2.4
Using template files in Vim
Vim templates or skeletons, allow you to specify a template to be used for new files with a certain extension.