我想根據三列獲取兩個表之間的重疊。在多個列和子串之間查找兩個表之間的重疊
文件1
Chr B C Start End F G E D
chr1 HAVANA gene 11869 14409 . + . gene_id "ENSG00000223972.5"; gene_type "transcribed_unprocessed_pseudogene"; gene_status "KNOWN"; gene_name "DDX11L1"; level 2; havana_gene "OTTHUMG00000000961.2";
chr1 HAVANA gene 100000 112000 . + . gene_id "ENSG00000223972.5"; gene_type "transcribed_unprocessed_pseudogene"; gene_status "KNOWN"; gene_name "DDX11L1"; level 2; havana_gene "OTTHUMG00000000961.2";
chr3 HAVANA gene 11870 14409 . + . gene_id "ENSG00000223972.5"; gene_type "transcribed_unprocessed_pseudogene"; gene_status "KNOWN"; gene_name "DDX11L1"; level 2; havana_gene "OTTHUMG00000000961.2";
chr3 HAVANA gene 11839 11869 . + . gene_id "ENSG00000223972.5"; gene_type "transcribed_unprocessed_pseudogene"; gene_status "KNOWN"; gene_name "DDX11L1"; level 2; havana_gene "OTTHUMG00000000961.2";
chr2 HAVANA gene 11869 14409 . + . gene_id "ENSG00000223972.5"; gene_type "transcribed_unprocessed_pseudogene"; gene_status "KNOWN"; gene_name "DDX11L1"; level 2; havana_gene "OTTHUMG00000000961.2";
....
文件2
A B Start End Chr D
ENSG00000177697 ENST00000525333 832986 833026 11 1
ENSG00000197283 ENST00000876382 100000 112000 1 1
ENSG00000194582 ENST00000184632 11869 14409 2 1
ENSG00000174528 ENST00000241053 154728 184728 12 1
ENSG00000103629 ENST00000816493 832986 917483 13 1
ENSG00000183628 ENST00000816472 711633 782163 11 1
ENSG00000192748 ENST00000164924 832986 982732 CHK_1231 1
ENSG00000183643 ENST00000917473 183728 194873 3 1
ENSG00000183647 ENST00000184637 800000 819483 2 1
ENSG00000177697 ENST00000184627 100023 120000 11 1
希望的輸出:
Chr B C Start End F G E D
chr1 HAVANA gene 100000 112000 . + . gene_id "ENSG00000223972.5"; gene_type "transcribed_unprocessed_pseudogene"; gene_status "KNOWN"; gene_name "DDX11L1"; level 2; havana_gene "OTTHUMG00000000961.2";
chr2 HAVANA gene 11869 14409 . + . gene_id "ENSG00000223972.5"; gene_type "transcribed_unprocessed_pseudogene"; gene_status "KNOWN"; gene_name "DDX11L1"; level 2; havana_gene "OTTHUMG00000000961.2";
的問題是,在文件2中的數第五列是一個子字符串第一個文件的第一列(所以而不是11,它會說chr11)。表2的第4和第5列應該與文件1(開始和結束)中的第4列和第5列相同。我想輸出完全看起來像文件1,只是元素應該等於文件2中的元素。
我不熟悉awk語法,對我來說這不是直觀的,但我在通過先前的帖子進行掃描時發現這條線,我想一個可能會擴大這個命令:
awk 'FNR==NR{a[$1]=$2 FS $3;next}{ print $0, a[$1]}' file2 file1 > file1_subset2
[編輯]你的問題包括更多的樣本輸入(行和不匹配的行)以及給定輸入的預期輸出。 –
*問題是第5列中的文件2中的數字是第一個文件的第1列的子字符串(所以不是11,它會說chr11)。*這很混亂。 '11'不是'chr1'的子字符串。 *「它會說」*是指什麼?你在你的問題中是否可以交換使用* table *和* file *?什麼是專欄*「應該是平等的」*? –