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環境で行う可能性はありますか?事前のおかげで
おかげ@CWLiuの背後にマッチしたケースを追加します。どうやら、それは正しく動作します! –
はい、@エドモートン、非常に良い点、私は提案としてそれを修正します。 – CWLiu
あなたは@EdMortonにぴったりです。再度、感謝します! –