I would like to sort a file on more fields. A sample tab separated file is:
a 1 1.0
b 2 0.1
c 3 0.3
a 4 0.001
c 5 0.5
a 6 0.01
b 7 0.01
a 8 0.35
b 9 2.3
c 10 0.1
c 11 1.0
b 12 3.1
a 13 2.1
And i would like to have it sorted alphabetically by field 1 (with -d
), and when field1 is the same, sort by field 3 (with the -g
option).
A didn't succeed in doing this. My attemps were (with a real TAB character instead of <TAB>
):
cat tst | sort -t"<TAB>" -k1 -k3n
cat tst | sort -t"<TAB>" -k1d -k3n
cat tst | sort -t"<TAB>" -k3n -k1d
None of these are working. I'm not sure if sort is even able to do this. I'll write a script for workaround, so I'm just curious whether there is a solution using only sort.
The manual shows some examples.
In accordance with zseder's comment, this works:
sort -t"<TAB>" -k1,1d -k3,3g
Tab should theoretically work also like this sort -t"\t"
.
If none of the above work to delimit by tab, this is an ugly workaround:
TAB=`echo -e "\t"`
sort -t"$TAB"
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