Text-Processing
根據公共列合併兩個文件並將文件2中不存在的文件添加0
我想合併兩個共享一些通用數據的文件。文件 1 包含的內容多於文件 2。我想按照文件 1 的順序根據它們的共享列合併文件,並且當文件 2 中不存在變數時,我想將 0 添加到第 5 列(AN1)。
我的文件如下所示: 文件 1
CHR BP SNP CM base 20 61098 rs6078030 -0.00024510777 1 20 61795 rs4814683 0 1 20 63231 rs6076506 0.0005026053 1 20 63244 rs6139074 0.00050714752 1
文件 2
CHR BP SNP CM AN1 20 9836704 rs221007 0 1 20 9817032 rs221011 0 1 20 9764069 rs2206484 0 1 20 9639395 rs4816159 0 1
我想根據第 3 列(SNP)匹配它們。我想暫時保留所有其他列。
我想要的輸出看起來像這樣(當 rsX 不存在時為 0):
文件 3
CHR BP SNP CM base AN1 20 61098 rs6078030 -0.00024510777 1 1 20 61795 rs4814683 0 1 1 20 63231 rs6076506 0.0005026053 1 1 20 63244 rs6139074 0.00050714752 1 1
我認為我需要在不止一個步驟中執行此操作。我嘗試使用 awk 進行第一步,但它只創建空文件。
awk -F' ' 'NR==FNR{e[$1$2]=1;next};e[$1$2]' file1 file 2 > file 3 awk -F' ' 'NR==FNR{e[$1$2]=1;next};e[1$2]' file2 file 1 > file 3
我想最後一步將是
join file1 file 2 > file 3
。
awk 'NR==FNR{ snp[$3]; next } { $6=($3 in snp)?(FNR==1?"AN1":"1"):"0" }1' file2 file1