首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >awk比较两个文件

awk比较两个文件
EN

Stack Overflow用户
提问于 2017-09-22 14:17:52
回答 2查看 1.2K关注 0票数 1

我需要和awk脚本来比较两个文件标签分隔的第一列,每次有匹配时,我需要打印第二个文件,否则我需要第一个文件的所有行。

file1.txt

代码语言:javascript
复制
denovo0  bacteria   0.99  
denovo1  bacteria   0.98  
denovo2  bacteria;Firmicutes;clostridium    0.99  
denovo3  bacteria;Firmicutes;bacillus   0.98  

file2.txt

代码语言:javascript
复制
denovo0  bacteria;Gammaproteobacteria;pseudomonas   0.99  
denovo1  bacteria;Alphaproteobacteria;Rhizobium     0.98

desired_output.txt

代码语言:javascript
复制
denovo0  bacteria;Gammaproteobacteria;pseudomonas  0.99  
denovo1  bacteria;Alphaproteobacteria;Rhizobium  0.98  
denovo2  bacteria;Firmicutes;clostridium    0.99  
denovo3  bacteria;Firmicutes;bacillus   0.98  
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-23 19:14:08

代码语言:javascript
复制
awk 'NR==FNR{a[$1]=$1;b[$1]=$0;next} $1==a[$1]{print $0 ;delete b[$1]}END{for (i in b ) print b[i]}'  file1 file2

解释

NR==FNR{a[$1]=$1;b[$1]=$0;next}:读取file1并分配带有第一列的数组a和以行为值的b

$1==a[$1]{print $0 ;delete b[$1]}:检查a中的值是否与file2的第一列匹配,如果是,则打印file2行并从数组b中删除该行。

END{for (i in b ) print b[i]}:打印数组b中的剩余项,即file1的剩余行

票数 1
EN

Stack Overflow用户

发布于 2017-09-22 14:23:40

这个awk应该适用于您:

代码语言:javascript
复制
awk -v OFS='\t' 'NR==FNR{a[$1]=$2; next} $1 in a{$2=a[$1]} 1' file2 file1

denovo0 |bacteria;Gammaproteobacteria;pseudomonas| 0.99
denovo1 |bacteria;Alphaproteobacteria;Rhizobium| 0.98
denovo2 |bacteria;Firmicutes;clostridium|   0.99
denovo3 |bacteria;Firmicutes;bacillus|  0.98

如果您想要一个表格输出,那么将其输送到column -t

代码语言:javascript
复制
awk -v OFS='\t' 'NR==FNR{a[$1]=$2; next} $1 in a{$2=a[$1]} 1' file2 file1 | column -t

denovo0  |bacteria;Gammaproteobacteria;pseudomonas|  0.99
denovo1  |bacteria;Alphaproteobacteria;Rhizobium|    0.98
denovo2  |bacteria;Firmicutes;clostridium|           0.99
denovo3  |bacteria;Firmicutes;bacillus|              0.98
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46366919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档