30

I'm trying to sort a file where typically (not always) the lines are

whatever:[A-Ba-b0-9_]: values

where fields are separated with :. Some lines do not follow this pattern, I'm not interested in them, they can be anywhere in the output.

I want to sort the lines only on the second column (and not on values), but when I do sort -t: -k 2 myfile, it sorts the file on all the line.

How to use the -k in order to have what I need?

Jav
  • 990
  • Which platform? sort has different options on Solaris and Linux. Also, is the field numeric or alphanumeric? – unxnut May 28 '13 at 15:05
  • I'm on Linux Mint 14. The filds are alphanumeric with also ', _, and other signs. – Jav May 28 '13 at 15:08
  • I tried your command on Ubuntu and it worked. May I suggest trying grep -v : myfile | sort -t: -k 2 to see if that gives you the desired result? – unxnut May 28 '13 at 15:12
  • All the line contain : – Jav May 28 '13 at 15:19

1 Answers1

44
sort -t: -k2

Sorts on the part of the line that goes from the second field to the end of the line. If you want to sort on the second field, you have to specify where the sort key ends:

sort -t: -k2,2

to sort on the second field only.