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.
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.
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
How to sort a file by ignoring the first 3 lines.
I was not able to get any help.
Thanks