- 10 Useful Examples of the Sort Command in Linux
- Sort command in Linux
- Examples of the sort command
- 1. Sort in alphabetical order
- 2. Sort on numerical value [option -n]
- 3. Sort in reverse order [option -r]
- 4. Random sort [option -R]
- 5. Sort by months [option -M]
- 6. Save the sorted results to another file
- 7. Sort Specific Column [option -k]
- 8. Sort and remove duplicates [option -u]
- 9. Ignore case while sorting [option -f]
- 10. Sort by human numeric values [option -h]
- How to Sort By Column In Linux
- Sort By Column
- Option -k
- Option -n
- Option -r
- Option -t
- Option -o
- Additional Options
10 Useful Examples of the Sort Command in Linux
Sort command in Linux is used for sorting the contents of the text files. This tutorial shows you some basic examples of the sort command.
Sort command in Linux
The sort command arranges text lines in useful ways. This simple tool can help you quickly sort information from the command line.
You should note a few thing:
- When you use sort without any options, the default rules are enforced. It helps to understand the default rules to avoid unexpected outcomes.
- When using sort, your original data is safe. The results of your input are displayed on the command line only. However, you can specify output to a separate file if you wish. More on that later.
- Sort was originally designed for use with ASCII characters. I did not test for this, but it is possible that different encodings may produce unexpected results.
The default rules in the sort command
These are the default rules when using sort. The first few examples will clarify how these priorties are managed. Then we will look at specialized options.
Examples of the sort command
Let me show you some examples of sort command that you can use in various situations.
1. Sort in alphabetical order
The default sort command makes it easy to view information in alphabetical order. No options are necessary and even with mixed-case entries, A-Z sorting works as expected.
I am going to use a sample text file named filename.txt and if you view the content of the file, this is what you’ll see:
MX Linux Manjaro Mint elementary Ubuntu
Now if you use sort command on it:
Here’s the alphabetically sorted output:
elementary Manjaro Mint MX Linux Ubuntu
2. Sort on numerical value [option -n]
Let’s take the same list we used for the previous example and sort in numerical order. In case you were wondering, the list reflects the most popular Linux distributions (July, 2019) according to distrowatch.com.
I will modify the contents of the file so that the items are numbered, but out of order as shown below.
1. MX Linux 4. elementary 2. Manjaro 5. Ubuntu 3. Mint
After sorting, the result is:
1. MX Linux 2. Manjaro 3. Mint 4. elementary 5. Ubuntu
Looks good, right? Can you rely on this method to arrange your data accurately, though? Probably not. Let’s look at another example to find out why.
1 5 10 3 5 2 60 23 432 21
Now, if I use the sort command without any options, here’s what I get:
1 10 2 21 23 3 432 5 5 60
NOTE: Numbers are sorted by their leading characters only.
When you add the -n option, the numerical value of the string is now being evaluated rather than only the first character. Now, you can see below that our list is properly sorted.
Now you’ll have the correctly sorted output:
1 2 3 5 5 10 21 23 60 432
3. Sort in reverse order [option -r]
For this one, I am going to use our distro list again. The reverse function is self-explanatory. It will reverse the order of whatever content you have in your file.
And here you have the output text in reverse order:
5. Ubuntu 4. elementary 3. Mint 2. Manjaro 1. MX Linux
4. Random sort [option -R]
If you accidentally mashed your shift key while attempting the reverse function, you might have gotten some strange results. -R rearranges output in randomized order.
Here’s the randomly sorted output:
4. elementary 1. MX Linux 2. Manjaro 5. Ubuntu 3. Mint
5. Sort by months [option -M]
Sort also has built in functionality to arrange by month. It recognizes several formats based on locale-specific information. I tried to demonstrate some unqiue tests to show that it will arrange by date-day, but not year. Month abbreviations display before full-names.
Here is the sample text file in this example:
March Feb February April August July June November October December May September 1 4 3 6 01/05/19 01/10/19 02/06/18
Let’s sort it by months using the -M option:
Here’s the output you’ll see:
01/05/19 01/10/19 02/06/18 1 3 4 6 Jan Feb February March April May June July August September October November December
6. Save the sorted results to another file
As I mentioned earlier, sort does not change the original file by default. If you need to save the sorted content, it can be done.
For this example, I’ve created a new file where I want the sorted information to be printed and saved with the name filename_sorted.txt.
Caution: If you try to direct your sorted data to the same file, it will erase the contents of your file.
sort filename.txt -n > filename_sorted.txt
If you use cat command on the output file, this will be its contents:
1. MX Linux 2. Manjaro 3. Mint 4. elementary 5. Ubuntu
7. Sort Specific Column [option -k]
If you have a table in your file, you can use the -k option to specify which column to sort. I added some arbitrary numbers as a third column and will display the output sorted by each column. I’ve included several examples to show the variety of output possible. Options are added following the column number.
1. MX Linux 100 2. Manjaro 400 3. Mint 300 4. elementary 500 5. Ubuntu 200
This will sort the text on the second column in alphabetical order:
4. elementary 500 2. Manjaro 400 3. Mint 300 1. MX Linux 100 5. Ubuntu 200
This will sort the text by the numerals on the third column.
1. MX Linux 100 5. Ubuntu 200 3. Mint 300 2. Manjaro 400 4. elementary 500
Same as the above command just that the sort order has been reversed.
4. elementary 500 2. Manjaro 400 3. Mint 300 5. Ubuntu 200 1. MX Linux 100
8. Sort and remove duplicates [option -u]
If you have a file with potential duplicates, the -u option will make your life much easier. Remember that sort will not make changes to your original data file. I chose to create a new file with just the items that are duplicates. Below you’ll see the input and then the contents of each file after the command is run.
1. MX Linux 2. Manjaro 3. Mint 4. elementary 5. Ubuntu 1. MX Linux 2. Manjaro 3. Mint 4. elementary 5. Ubuntu 1. MX Linux 2. Manjaro 3. Mint 4. elementary 5. Ubuntu
sort filename.txt -u > filename_duplicates.txt
Here’s the output files sorted and without duplicates.
1. MX Linux 2. Manjaro 3. Mint 4. elementary 5. Ubuntu
9. Ignore case while sorting [option -f]
Many modern distros running sort will implement ignore case by default. If yours does not, adding the -f option will produce the expected results.
Here’s the output where cases are ignored by the sort command:
alpha alPHa Alpha ALpha beta Beta BEta BETA
10. Sort by human numeric values [option -h]
This option allows the comparison of alphanumeric values like 1k (i.e. 1000).
I hope this tutorial helped you get the basic usage of the sort command in Linux. Sort command is often used in conjugation with the uniq command in Linux for uniquely sorting text files.
If you have some cool sort trick, why not share it with us in the comment section?
How to Sort By Column In Linux
When dealing with a file that has a large number of entries, sorting the contents in a certain order can make things so much easier. In Linux, the sort command, which employs the merge sort algorithm, is used for this purpose.
The sort command compares all lines from the given files and sorts them in the specified order based on the sort keys. The -k option, in particular, is used to sort on a certain column.
In conjunction with the -k option, you’ll also need to know about other options like -n or -r to efficiently sort by column. We’ve detailed these and other related topics in the sections below.
Sort By Column
The base syntax for the sort command is sort . To apply this, let’s start with an example. Let’s say we have a contacts.txt file with the following entries:
Emma Smith US 51 Edward Dyer UK 19 Natalie Russell Canada 22 Mathew Roberts Germany 21 Ruth Abraham Australia 44 Joseph Smith France 25
Just using the sort contacts command would sort the entries in alphabetical order based on the first column. To sort by another specific column, or in another order, you’ll have to use various options, which we’ve listed below.
Option -k
As stated, the —key , or -k option is used to sort on a specific column or field. For instance, in our example, if you wanted to sort by nationality, you’d use the following command to sort on the third column:
sort -k3 contacts
This command will take all fields from 3 to the end of the line into account. Alternatively, if you used sort -k3,4 contacts , this would specify to use the fields from #3 to #4, i.e., the third to fourth fields.
If you were trying to sort by surnames in the second column, there are two scenarios to consider. As there are identical entries (Smith), sort will use the next entry for the tiebreaker. I.e., in the case of the two smiths, France would be sorted above US.
But what if you needed to sort by surname, name, and only then nationality? In such cases, you can manipulate the sort order by specifying keys multiple times as such:
sort -k2,2 -k1,1 contacts
Option -n
If you use the commands shown above to sort by age on the fourth column, the results would seem inaccurate. As sort takes a lexicographic approach, fiftyone would rank above nineteen.
To sort a column by numbers, you have to instead specify the -n option as such:
sort -n -k4 contacts
Option -r
If you were trying to sort entries in reverse order, you would use the -r option. This is true for both alphabetical and numeric values, as shown below:
sort -r -k1,1 contacts
sort -r -k3,4 contacts
By combining the basic options we’ve listed so far, you could perform complex sorting operations like reverse sorting on the second column and numerically sorting on the fourth column at once:
sort -k2,2r -k4,4n contacts
Option -t
A blank space is the default field separator, i.e., delimiter with sort. But CSV files use commas (,) to separate values. Depending on what delimiter is used, you can specify it using the -t option. For instance, if : is the delimiter, you would specify it as such:
sort -t ‘:’ -k2 contact
Option -o
You can use the -o option to save the sorted output into a specified file as such:
sort -k2 contacts -o sortedcontacts
Additional Options
The options detailed above are the most commonly used ones. But sort has countless other flags that could be useful in niche scenarios like -b to ignore blank spaces at the start of the file, -M to sort the contents as per the calendar month, or -c to check if data is already sorted. As there are too many to list here, we recommend referring to the sort man page for the full list of such options.
Anup Thapa primarily covers Windows systems, networking, and computer hardware at TechNewsToday. Anup has been writing professionally for almost 5 years, and tinkering with PCs for much longer. His love for all things tech started when he got his first PC over 15 years ago. It was a Pentium IV system running Windows XP on a single 256 MB stick. He spent his formative years glued to this PC, troubleshooting any hardware or software problems he encountered by himself. Professionally, Anup has had brief forays into a variety of fields from coding and hardware installation to writing. In doing so, he’s worked with people of different backgrounds and skill levels, from average joes to industry leaders and experts. This has given him not just a versatile skill set, but also a unique perspective for writing that enables him to concisely communicate complex information and solve his reader’s problems efficiently. You can reach out to him at anup@technewstoday.com.