【发布时间】:2019-04-19 10:16:16
【问题描述】:
我有两个不同的文件,我想将第一个中的一个数字与另一个数字中的另一个数字部分匹配,然后提取整个列。
文件1:
smt_hsa_3150 932
smt_hsa_28592 682
smt_hsa_5184 657
smt_hsa_430 648
smt_hsa_14100 648
smt_hsa_96 648
文件2:
chr11 5933549 5933577 29 + hsa_smt_028592
chr11 45693060 45693086 27 - hsa_smt_000059
chr11 45699803 45699832 30 - hsa_smt_000087
chr2 131291172 131291197 26 - hsa_smt_000096
我需要将 smt_hsa_28592 或 28592 与 hsa_smt_028592 或 028592 匹配。 然后将第二个文件中的行加上第一个文件第二列中的数字提取到一个新文件中。
输出:
chr11 5933549 5933577 29 + hsa_smt_028592 682
chr2 131291172 131291197 26 - hsa_smt_000096 648
由于我是 awk/sed 编程的新手,我首先尝试将第一个文件的第一列的名称从 smt_hsa_3150 更改为 hsa_smt_3150,但是当我执行时
awk '{gsub("smt","hsa")}1'
那么,我不能使用相同的代码只更改第二个“hsa”。 第二个问题是如何将 hsa_smt_028592 与 smt_has_28592 或 smt_hsa_96 与 hsa_smt_000096 匹配。
【问题讨论】: