I need to sort a flat file by third column leaving first column intact [First column is already sorted] (in linux). (second column may change)
Example i/p file:-
b:di:wave
b:di12:red
b:di12:wave
b:di06:pir
Should look like:-
b:di06:pir
b:di12:red
b:di12:wave
bast:di:wave
I tried several sorting options but I could sort only by second column but not third.
Can someone please help ?
Try this:
gives:
This will sort with the 1st field as primary key, and the 3rd field as secondary key splitting the line into fields by
:
Details:
data.txt
contains the 4 lines from your post.You can specify multiple fields as sorting keys, see the man page
-k1,1
means sort on the first field (start at field 1 and end at field 1, otherwise it would continue using the rest of the line for determining the sort)-k3
means sort on the 3rd field as secondary key. Since there are no other fields behind it is not necessary to specify-k3,3
but it wouldn't hurt either.-t:
means delimit fields in lines with the:
character, otherwise blank is used by defaultMore information see this SO question Sorting multiple keys with Unix sort and the sort man page