【发布时间】:2021-10-30 05:07:36
【问题描述】:
我有一个包含多列的文件。我想比较 A1 ($4) 和 A2 ($14),如果值不匹配,则打印 A2 ($14) 的值。如果值匹配,我想打印 A1 的值(15 美元)。
文件:
chr SNP BP A1 TEST N OR Z P chr SNP cm BP A2 A1
20 rs6078030 61098 T ADD 421838 0.9945 -0.209 0.8344 20 rs6078030 0 61098 C T
20 rs143291093 61270 G ADD 422879 1.046 0.5966 0.5508 20 rs143291093 0 61270 G A
20 rs4814683 61795 T ADD 417687 1.015 0.6357 0.525 20 rs4814683 0 61795 G T
期望的输出:
chr SNP BP A1 TEST N OR Z P chr SNP cm BP A2 A1 noneff
20 rs6078030 61098 T ADD 421838 0.9945 -0.209 0.8344 20 rs6078030 0 61098 C T C
20 rs143291093 61270 G ADD 422879 1.046 0.5966 0.5508 20 rs143291093 0 61270 G A A
20 rs4814683 61795 T ADD 417687 1.015 0.6357 0.525 20 rs4814683 0 61795 G T G
我首先检查了第 4 列和第 15 列之间的差异。
awk '$4!=$15{print $4,$15}' file > diff
然后我尝试编写 if-else 语句:
awk '{if($4=$14) print $16=$14 ; else print $16=$15}' file > new_file
【问题讨论】:
-
你介意澄清一下逻辑吗?当我阅读您的描述时,无论如何,第 16 列都会收到第 15 列的值。
-
我编辑了我的问题,很抱歉造成混乱。我想比较 A1(4 美元)和 A2(14 美元)。所以我想打印A2($14)的值,如果没有匹配,但是如果有匹配,我想打印$16中A1($15)的值。
标签: awk text-processing