19

我正在尝试根据第四列对该文件进行排序。我希望文件根据第四列的值重新排序。

文件:

2   1:103496792:A   0   103496792
3   1:103544434:A   0   103544434
4   1:103548497:A   0   103548497
1   1:10363487:T    0   10363487

我希望它像这样排序:

1   1:10363487:T    0   10363487
2   1:103496792:A   0   103496792
3   1:103544434:A   0   103544434
4   1:103548497:A   0   103548497

我试过这个命令:

sort -t$'\t' -k1,1 -k2,2 -k3,3 -k 4,4 <filename>

但我得到非法变量名错误。有人可以帮我吗?

4

2 回答 2

47

要对第四列进行排序,只需使用-k 4,4选择器。

sort -t $'\t' -k 4,4 <filename>

您可能还想要-V更自然地对数字进行排序。例如,yielding1 2 10而不是1 10 2(字典顺序)。

sort -t $'\t' -k 4,4 -V <filename>

如果您收到有关的错误,请$'\t'确保您的 shell 是 bash。也许您在#!/bin/bash脚本的顶部丢失了?

于 2013-07-02T16:12:27.807 回答
4

我相信你的指挥有错误$

尝试:

sort -t\t -nk4
于 2013-07-02T16:13:31.323 回答