Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 将两个文件合并为一列_Unix_Merge_Annotations - Fatal编程技术网

Unix 将两个文件合并为一列

Unix 将两个文件合并为一列,unix,merge,annotations,Unix,Merge,Annotations,我有两个文件 $ wc -l new_bacteria.txt 28633861 new_bacteria.txt $ wc -l allin1_trinity_bacteria_blastx.tsv 4352 allin1_trinity_bacteria_blastx.tsv $ head new_bacteria.txt gi|406035365|ref|ZP_11042729.1| Acinetobacter parvus gi|406035366|ref|ZP_11042730

我有两个文件

$ wc -l new_bacteria.txt 
28633861 new_bacteria.txt

$ wc -l allin1_trinity_bacteria_blastx.tsv 
4352 allin1_trinity_bacteria_blastx.tsv

$ head new_bacteria.txt
gi|406035365|ref|ZP_11042729.1| Acinetobacter parvus
gi|406035366|ref|ZP_11042730.1| Acinetobacter parvus
gi|406035367|ref|ZP_11042731.1| Acinetobacter parvus
gi|406035368|ref|ZP_11042732.1| Acinetobacter parvus
gi|406035369|ref|ZP_11042733.1| Acinetobacter parvus
gi|406035370|ref|ZP_11042734.1| Acinetobacter parvus
gi|406035371|ref|ZP_11042735.1| Acinetobacter parvus
gi|406035372|ref|ZP_11042736.1| Acinetobacter parvus
gi|406035373|ref|ZP_11042737.1| Acinetobacter parvus
gi|406035374|ref|ZP_11042738.1| Acinetobacter parvus

$ head allin1_trinity_bacteria_blastx.tsv

c91_g1_i1   gi|46447089|ref|YP_008454.1|    39.60   101 59  1   306 4   1676    1774    6e-11   68.2
c146_g1_i1  gi|357399595|ref|YP_004911520.1|    39.53   86  47  2   246 4   49  134 5e-06   52.0
c202_g1_i1  gi|508605652|ref|YP_006991274.2|    62.16   37  14  0   154 44  49  85  3e-06   45.4
c202_g1_i1  gi|508605652|ref|YP_006991274.2|    63.16   19  7   0   201 145 33  51  3e-06   27.7
c202_g1_i1  gi|508605652|ref|YP_006991274.2|    76.92   13  3   0   242 204 20  32  3e-06   21.6
c224_g1_i1  gi|395217261|ref|ZP_10401556.1| 72.62   84  23  0   260 9   274 357 6e-38     144
c230_g1_i1  gi|261381445|ref|ZP_05986018.1| 57.50   40  17  0   248 129 57  96  2e-09   45.8
c230_g1_i1  gi|261381445|ref|ZP_05986018.1| 50.00   42  19  1   120 1   101 142 2e-09   41.2
c294_g1_i1  gi|298242911|ref|ZP_06966718.1| 37.33   75  46  1   14  238 814 887 3e-07   56.2
c304_g1_i1  gi|296393792|ref|YP_003658676.1|    42.86   56  32  0   56  223 17  72  6e-06   51.2
我想通过allin1_trinity_bacteria_blastx.tsv的第二列合并这两个文件。我希望输出一个和这个tsv文件行数相同的文件,因为另一个文件非常大

在R中这是一项很容易的工作,但因为这里我的注释文件(new_bacteria.txt)非常大。我正在考虑使用unix合并。但是如何使输出仅包含tsv文件中所需的列,而不包含新的_.txt文件中的所有留置权

谢谢大家!

我正在考虑使用unix合并。但是我怎样才能获得输出呢 仅包含tsv文件中所需的列,但不包含所有 新的_bacteria.txt文件中的留置权

确实有一个名为
merge
的程序,但尽管名称与R的
merge()
函数匹配,但它的用途(将单独的更改合并到原始文件)并不是您所需要的;你可以用它。请注意,文件必须按联接字段排序。示例脚本在加入之前对两个文件进行排序;如果
new_bacteria.txt
已排序,则可以使用它代替
sorted.txt
;如果您想在
allin1\u trinity\u bacteria\u blastx.tsv
上运行多个联接,那么只对其进行一次排序并重用
sorted.tsv
可能是值得的

sort -k2b allin1_trinity_bacteria_blastx.tsv >sorted.tsv
sort                        new_bacteria.txt >sorted.txt
join -1 2 sorted.tsv sorted.txt

欢迎来到Stackoverflow!请注意,您需要更具体一点,并告诉我们您已经尝试了什么(并且没有起作用)。在R中,我们可以做:
t1I不擅长
R
,但在我看来,您可能正在寻找一种更好的方式逐行读取文件,而不是一次全部读取,如果大小是您的限制。您必须使用任何其他程序(使用“Unix”或其他方式)执行相同的操作。