为什么在Unix中的join命令说我的文件没有排序?

时间:2019-03-13 13:31:24

标签: sorting unix join

我一直在尝试对我拥有的两个文件使用连接,每个文件都在特定列上(fileA为18th,fileB为1rst),它告诉我文件未排序。我确实在这些文件上使用了命令排序,但无法理解发生了什么。

我尝试使用以下命令并获得了相同的结果(即:“文件未排序”):

join -1 18 -2 1 <(perl -p -e s'/"//'g fileA|sort -k 18) <(sort -k 1 fileB)|less
join -1 18 -2 1 <(perl -p -e s'/"//'g fileA|sort -n -k 18) <(sort -n -k 1 fileB)|less
join -1 18 -2 1 <(perl -p -e s'/"//'g fileA|sort -V -k 18) <(sort -V -k 1 fileB)|less

典型的fileA行如下所示:

chr8    848289  852184  a       0       +       chr8    StringTie       transcript      848290  852184  3895    +       .       gene_id Genome.106729; transcript_id Genome.106729.1; reference_id refGenome_T001.mrna1; ref_gene_id refGenome_T001.path1; ref_gene_name refGenome_T001; cov 342.423218; FPKM 8.291647; TPM 12.997114;       3895

典型的fileB行如下所示:

Genome.106729.1  2078

我了解到文件必须按连接中使用的列进行排序,但似乎无法正常工作。有人可以帮我吗?

最诚挚的问候


我发现发生了什么事。该命令没问题,只是我没有空间在文件夹中创建文件,而且我的一个文件的开头没有空白行。我认为没有可用空间使它无法在内存中创建任何东西,从而导致了错误。

1 个答案:

答案 0 :(得分:0)

我发现发生了什么事。该命令没问题,只是我没有空间在文件夹中创建文件,而且我的一个文件的开头没有空白行。我认为没有可用空间使它无法在内存中创建任何东西,从而导致错误。