我有两个文件
$ 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 merge。但是,如何使输出仅包含我想要在tsv文件中的列,但不包含new_bacteria.txt文件中的所有留言?
谢谢!
答案 0 :(得分:0)
我正在考虑使用unix merge。但是我怎样才能输出 只包含我想要在tsv文件中的列,但不是全部 留在new_bacteria.txt文件中?
确实有一个名为merge
的程序,但是尽管名称与R的merge()
函数匹配,但其目的(将原始文件的单独更改组合在一起)并不是您所需要的;你宁可使用join
。请注意,必须在连接字段上对文件进行排序。示例脚本在加入之前对两个文件进行排序;如果new_bacteria.txt
已经排序,您可以使用它而不是sorted.txt
;如果你想在allin1_trinity_bacteria_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