Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I sort alphanumeric strings in Unix?

Tags:

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.

like image 534
Lazer Avatar asked Nov 25 '10 17:11

Lazer


People also ask

How do you sort alphanumeric strings?

you should split the strings in two first; the other part being the integer part, and the other the string part. then first compare the integers - if the integers are not equal, the string that should appear first is the one with the smaller integer part.

How do you sort a string in Unix?

-k Option: Unix provides the feature of sorting a table on the basis of any column number by using -k option. Use the -k option to sort on a certain column. For example, use “-k 2” to sort on the second column.

How do I sort ascending in Unix?

Option -n In Unix, when you try to sort a file in a numeric way, you can use the option '-n' with the sort command. This command is used to sort the numeric contents present in the file. Be default, it sorts in ascending order.


1 Answers

You can always perform sort with argument -V to sort alphanumeric string..

$ sort -V inputfile > outputfile  $ cat inputfile   TAB1   TAB13   TAB11   TAB19   TAB2   TAB3   TAB16   TAB17   TAB18   TAB9   TAB10   TAB8   TAB12   TAB20    $ cat outputfile   TAB1   TAB2   TAB3   TAB8   TAB9   TAB10   TAB11   TAB12   TAB13   TAB16   TAB17   TAB18   TAB19   TAB20   
like image 106
user3682472 Avatar answered Oct 14 '22 23:10

user3682472