How To Linux How to Sort Data in a File Using Linux Share Pin Email Print Linux Guides & Tutorials Basics Installing & Upgrading Tips & Tricks Commands Key Concepts by Gary Newell An application developer and software tester with more than 20 years in the IT industry working on Windows, UNIX and Linux. Updated April 15, 2019 With this guide, you'll learn how to sort data in delimited files and from the output of other commands. You won't be surprised to learn that the command you use to perform this task is called "sort". All of the major switches of the sort command will be provided in this article. Sample Data The data in a file can be sorted as long as it is delimited in some way. For example, let's take the final league table from the Scottish Premier League last year and store the data in a file called "spl". You can create a data file as follows with one club and the data for that club separated by commas on each row. Team Goals Scored Goals Against Points Celtic 93 31 86 Aberdeen 62 48 71 Hearts 59 40 65 St Johnstone 58 55 56 Motherwell 47 63 50 Ross County 55 61 48 Inverness 54 48 52 Dundee 53 57 48 Partick 41 50 46 Hamilton 42 63 43 Kilmarnock 41 64 36 Dundee United 45 70 28 How to Sort Data in Files From that table, you can see that Celtic won the league and Dundee United came last. If you are a Dundee United fan you might want to make yourself feel better and you could do this by sorting on goals scored. To do this run the following command: sort -k2 -t, spl This time the order would be as follows: PartickKilmarnockHamiltonDundee UnitedMotherwellDundeeInvernessRoss CountySt JohnstoneHeartsAberdeenCeltic The reason the results are in this order is that column 2 is the goals scored column and the sort goes from lowest to highest. The -k switch lets you choose the column to sort by and the -t switch lets you choose the delimiter. To make themselves really happy the Dundee United fans can sort by column 4 using the following command: sort -k4 -t, spl Now Dundee United are top and Celtic are at the bottom. Of course, this would make both Celtic and Dundee fans very unhappy indeed. To put things right you can sort in reverse order using the following switch: sort -k4 -t, -r spl A rather bizarre switch lets you sort randomly which really just jumbles up the rows of data. You can do this using the following command: sort -k4 -t, -R spl This could cause real problems if you mixed up your -r and your -R switch. The sort command can also sort dates into month order. To demonstrate look at the following table: Month Data Used January 4G February 3000K March 6000K April 100M May 5000M June 200K July 4000K August 2500K September 3000K October 1000K November 3G December 2G The above table represents the month of the year and the amount of data used on a mobile device. You can sort the dates alphabetically using the following command: sort -k1 -t, datausedlist You can also sort by month using the following command: sort -k1 -t, -M datausedlist Now obviously the table above already shows them in month order but if the list was randomly populated then this would be a simple way of sorting them. Looking at the second column you can see that all of the values are in a human-readable format which doesn't look like it would be easy to sort but the sort command can sort the data used column by using the following command: sort -k2 -t, -h datausedlist How to Sort Data Passed In From Other Commands Whilst sorting data in files is useful, the sort command can also be used to sort the output from other commands: For example, look at the ls command: ls -lt The above command returns each file as a row of data with the following fields displayed in columns: permissionsnode countusernamegroupnamesizelast access datefile name You can sort the list by file size by running the following command: ls -lt | sort -k5 To get the results in reverse order you would use the following command: ls -lt | sort -k5 -r The sort command can also be used in conjunction with the ps command which lists processes running on your system. For instance, run the following ps command on your system: ps -eF The above command returns a lot of information about the processes currently running on your system. One of those columns is the size and you might want to see which processes are the biggest. To sort this data by size you would use the following command: ps -eF | sort -k5 Summary There isn't much to the sort command but it can become useful very quickly when sorting output from other commands into a meaningful order especially when the command doesn't have its own sort switches available. For more information read the manual pages for the sort command. Continue Reading Great Tips for Entering Data into Excel Get a List of Your Files and Folders Using the Ls Command Here Are the Different Ways to Sort Data in Excel Linus: Command Line Versus GUI? How To Show System Processes Using The ps Command How to Show a File's Printable Characters With the Strings Command Protect your data! How to Use the Linux Cat Command How to Determine the File Type of a File Using Linux Learn to Manage Data in Excel With Databases, Tables, and Fields Learn How to Sort Your Related Data in Excel With Tables Excel Excels at Sorting More Than Just Numbers How to Use the Linux Which Command How Do I Use Hard Links to Link Files in Linux? How to Quickly use Sort Order to Manage Your Excel Spreadsheets How Do You Sort by Color in Microsoft Excel?