2017-09-21 3 views
0

要約すると、私は以下のように2つのTABファイルを持っています。Unixでハッシュを実行できますか?ある列のすべての行について、他のタブファイル内の他の列に対応するすべての一致を表示します。

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 

Iが2列目にそれぞれ一致を関連付けるためにハッシュを実行したい所望の出力

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 

最初のファイルから2番目のファイルの最初の列のすべての行について、2番目のファイルと、前夜の最初のファイルのすべての一致行。私はハッシュをしようとしています

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

最初の偶然が最初のファイルで見つかったが、すべてではないと思います。したがって、最初のファイルに関連するすべての一致が出力ファイルに登録されるわけではありません。希望の出力を得るためにUnix環境で行う可能性はありますか?事前のおかげで

答えて

4

以下のようにこれは、あなたが希望するものを取得する必要があり、

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 $6h[$2]
+0

おかげ@CWLiuの背後にマッチしたケースを追加します。どうやら、それは正しく動作します! –

+1

はい、@エドモートン、非常に良い点、私は提案としてそれを修正します。 – CWLiu

+0

あなたは@EdMortonにぴったりです。再度、感謝します! –

関連する問題