我有一个大文件,里面有这样的行:(^我代表一个标签,$ end-of-line)
2^IElaeocarpus williamsianus^I48$
4^I$
6^I$
8^I$
10^I$
12^I$
14^IElaeocarpus hookerianus^I73$
16^IElaeocarpus kirtonii^I111$
20^I$
22^ITetratheca juncea^I66$
42^IMalagasy giant rat^I401$
我希望对这些行进行排序,以使第3个字段中编号最高的那些(即第2个标签之后)排在第一位,即
42^IMalagasy giant rat^I401$
16^IElaeocarpus kirtonii^I111$
14^IElaeocarpus hookerianus^I73$
22^ITetratheca juncea^I66$
2^IElaeocarpus williamsianus^I48$
4^I$
6^I$
8^I$
10^I$
12^I$
20^I$
(我不关心没有字段3的行的顺序)。所以我假设以下内容会起作用
sort -r -t $'\t' -k 3,3n myfile
但它没有(GNU sort,OS X 10.9)。我觉得我很蠢。什么是正确的咒语?
答案 0 :(得分:1)
您需要在-k
参数中添加修饰符,而不是命令行参数。
因此,这些内容中的某些内容应该可以解决问题:
sort -t $'\t' -k 3,3nr myfile
答案 1 :(得分:0)
似乎不是n
你想要的,而是g
。
sort -t $'\t' test.txt -k 3.2gr
点在键中指定要开始比较的字符。
正如favoretti指出的那样,你想要反转的是那一列,所以你在那里应用修饰语。