我可以执行unix的哈希,其中一行中的每一行打印所有与其他选项卡文件中其他列相对应的巧合



在摘要中,我有两个标签文件,如描述bellow。

input1.tsv

34167   305603  S568    phosphorylation S       568
99024   179102  T170    Glycosylation   T       170                                                     
99025   179102  Y182    phosphorylation Y       182                                                     
74300   105800  S632    phosphorylation S       632                                                     
41095   105800  S748    phosphorylation S       748                                                     
41096   105800  S778    acethylation    S       778

和input2.tsv

179102  FUCA1   NM_000147.4 NP_000138.2
179102  FUCA1   XM_005245821.2  XP_005245878.1
179102  FUCA1   XM_011541167.2  XP_011539469.1
179102  FUCA1   XM_017000905.1  XP_016856394.1
357819  AGT     NM_000029.3     NP_000020.1
105800  INPP5B  NM_001297434.1  NP_001284363.1
105800  INPP5B  NM_001297434.1  NP_001284363.1

所需的输出

179102  FUCA1   NM_000147.4 NP_000138.2    Glycosylation   T       170   phosphorylation Y       182
179102  FUCA1   XM_005245821.2  XP_005245878.1    Glycosylation   T       170   phosphorylation Y       182
179102  FUCA1   XM_011541167.2  XP_011539469.1    Glycosylation   T       170   phosphorylation Y       182
179102  FUCA1   XM_017000905.1  XP_016856394.1    Glycosylation   T       170   phosphorylation Y       182
357819  AGT     NM_000029.3     NP_000020.1
105800  INPP5B  NM_001297434.1  NP_001284363.1    phosphorylation S       748   phosphorylation S       748    acethylation    S       778
105800  INPP5B  NM_001297434.1  NP_001284363.1    phosphorylation S       748   phosphorylation S       748    acethylation    S       778

我想做一个哈希,以将第一个文件的每个第一个文件的每个行中的每个列中的每个巧合与第二个文件的第一列和打印第二个文件的第一列以及每个行的所有第一个文件的巧合。我正在尝试做一个像

这样的哈希
awk 'BEGIN {FS=OFS="t"} NR==FNR {h[$2]=$4"t"$5"t"$6; next} {print $0,h[$1]}' "input1" "input2" > "output";

不便之处是我认为仅在第一个文件中发现的第一个重合,但不是全部。因此,并非所有与第一个文件有关的巧合都在输出文件中注册。为了获得所需的输出,是否有可能在UNIX环境中进行操作?预先感谢

按照以下方式修改命令

awk 'BEGIN {OFS="t"} NR==FNR{h[$2]=h[$2] OFS $4 OFS $5 OFS $6;next} {print $0,h[$1]}' Input1.tsv Input2.tsv

这应该得到您想要的。

修改零件:

  • h[$2]=h[$2] OFS $4 OFS $5 OFS $6:附加h[$2]背后的匹配案例

相关内容

最新更新