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.
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.
-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.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With