Alex Rivera | Logout

How can I sort alphanumeric strings in Unix?

Asked 2010-11-25T17:22:33.793
27

I have a list of table names, which are out of order. How can I get them in the correct logical order?

$ cat list.txt

TAB1
TAB13
TAB11
TAB19
TAB2
TAB3
TAB16
TAB17
TAB18
TAB9
TAB10
TAB8
TAB12
TAB20

$ cat list.txt | sort -n

TAB1
TAB10
TAB11
TAB12
TAB13
TAB16
TAB17
TAB18
TAB19
TAB2
TAB20
TAB3
TAB8
TAB9

Expected order:

TAB1
TAB2
TAB3
TAB8
TAB9
TAB10
TAB11
TAB12
TAB13
TAB16
TAB17
TAB18
TAB19
TAB20

Any vim short-cuts will also do, I do not necessarily need a separate utility for this.

Edit
Report

1 Answer

8

Since this is tagged as a Vim question, I figured it might be worth mentioning the Vim option (even though I would personally use sort since the data's already in a file). It's simply

:sort n

Since Vim's numeric sort ignores up to the first decimal number, one doesn't need to ignore the "TAB" (:sort can take a pattern to ignore, :sort n /TAB/ would work as well, for example). As usual, :h :sort for more information.

answered 2010-11-26T03:12:42.437

Your Answer