一尘不染

根据列排序命令bash对制表符分隔的文件进行排序

linux

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

文件:

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>

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


阅读 259

收藏
2020-06-07

共1个答案

一尘不染

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

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

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

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

如果您收到有关的错误,请$'\t'确保您的外壳是bash。也许您缺少#!/bin/bash脚本的顶部?

2020-06-07