awk来替代基于另一个

问题描述:

我试图使用awkCLINSIGNF-1的值来代替ClassificationNF+1的值,如果这个值是Benign领域的价值。我认为awk接近,但目前我得到一个空文件。怎么了?awk来替代基于另一个

输入

Chr Start End Ref Alt Func.refGene PopFreqMax CLINSIG Classification 
chr1 43395635 43395635 C T exonic 0.12 Benign VUS 
chr1 43396414 43396414 G A exonic 0.14 Benign VUS 
chr1 172410967 172410967 G A exonic 0.66 VUS 

AWK

awk -v OFS='\t' '{ if ($(NF-1) == "Benign") sub($(NF+1)=$(NF-1); print $0 }' input 

所需的输出

Chr Start End Ref Alt Func.refGene PopFreqMax CLINSIG Classification 
chr1 43395635 43395635 C T exonic 0.12 Benign Benign 
chr1 43396414 43396414 G A exonic 0.14 Benign Benign 
chr1 172410967 172410967 G A exonic 0.66 VUS 
+1

难道你不觉得这是值得一提的,并可以发布您的awk脚本是生产的语法错误?可以让我们更容易帮助你。 –

+0

我很抱歉,'awk'确实运行了,正如@James Brown所怀疑的那样,我指的是错误的'NF'变量。我仍然试图理解这一点,因为它使事情变得更容易。谢谢:) – Chris

+0

awk脚本发布在你的问题'awk -v OFS ='\ t''{if($(NF-1)==“Benign”)sub($(NF + 1)= $(NF -1); print $ 0}'input' **不能运行,因为它包含一个语法错误,如果你运行了一些其他的awk脚本,那么显然,这就是你应该让我们看看的东西 –

你可能意味着ClassificationNF,不NF+1

$ awk -v OFS='\t' '$(NF-1)=="Benign" {$(NF)=$(NF-1)} {print $0 }' input 
Chr Start End Ref Alt Func.refGene PopFreqMax CLINSIG Classification 
chr1 43395635  43395635  C  T  exonic 0.12 Benign Benign 
chr1 43396414  43396414  G  A  exonic 0.14 Benign Benign 
chr1 172410967  172410967  G  A  exonic 0.66 VUS 
+0

非常感谢:) 。 – Chris