Daily Hacks

Hack #14 -> Sort Command

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 filesize.

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.

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s