Hack 23. Sort Command Examples

Sort command sorts the lines of a text file. Following are several practical examples on how to use the sort command based on the following sample text file that has employee information in the format:

employee_name:employee_id:department_name.
$ cat names.txt

Emma Thomas:100:Marketing
Alex Jason:200:Sales
Madison Randy:300:Product Development
Sanjay Gupta:400:Support
Nisha Singh:500:Sales

Sort a text file in ascending order

$ sort names.txt

Alex Jason:200:Sales
Emma Thomas:100:Marketing
Madison Randy:300:Product Development
Nisha Singh:500:Sales
Sanjay Gupta:400:Support

Sort a text file in descending order

$ sort -r names.txt

Sanjay Gupta:400:Support
Nisha Singh:500:Sales
Madison Randy:300:Product Development
Emma Thomas:100:Marketing
Alex Jason:200:Sales

Sort a colon delimited text file on 2nd field (employee_id)

$ sort -t: -k 2 names.txt

Emma Thomas:100:Marketing
Alex Jason:200:Sales
Madison Randy:300:Product Development
Sanjay Gupta:400:Support
Nisha Singh:500:Sales

Sort a tab delimited text file on 3rd field (department_name) and suppress duplicates

$ sort -t: -u -k 3 names.txt

Emma Thomas:100:Marketing
Madison Randy:300:Product Development
Alex Jason:200:Sales
Sanjay Gupta:400:Support

Sort the passwd file by the 3rd field (numeric userid)

$ sort -t: -k 3n /etc/passwd | more

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

Sort /etc/hosts file by ip-address

$ sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n /etc/hosts

127.0.0.1 localhost.localdomain localhost
192.168.100.101 dev-db.thegeekstuff.com dev-db
192.168.100.102 prod-db.thegeekstuff.com prod-db
192.168.101.20  dev-web.thegeekstuff.com dev-web
192.168.101.21  prod-web.thegeekstuff.com prod-web

Combine sort with other commands

  • ps –ef | sort : Sort the output of process list
  • ls -al | sort +4n : List the files in the ascending order of the file-size. i.e sorted by 5th filed and displaying smallest files first.
  • ls -al | sort +4nr : List the files in the descending order of the file-size. i.e sorted by 5th filed and displaying largest files first.

Comments on this entry are closed.

  • veeranjaneya November 9, 2013, 10:05 pm

    I am unable to sort the fields with the command “ls -la”.

    I am getting below error.

    =======================
    ls -la | sort 4n
    sort: open failed: 4n: No such file or directory
    ls -la | sort +4n
    sort: open failed: +4n: No such file or directory
    ========================
    Sort is looking for the file name here. Can you please help me here.

  • Bill January 23, 2014, 4:18 am

    The example does not show it but you need the -k parameter – The proper format to lilst a directory by file size ascending is
    ls -al|sort -k 5n

    size descending is
    ls -al|sort -k 5nr

  • biuser February 5, 2014, 4:32 am

    How to sort a file by ignoring the first 3 lines.
    I was not able to get any help.
    Thanks