awk基于另一个字段替换字段值

awk基于另一个字段替换字段值,awk,Awk,我试图使用awk将Classification字段NF+1的值替换为CLINSIG字段NF-1的值,如果该值为良性。我认为awk已关闭,但目前我得到一个空文件。怎么了 输入 Chr Start End Ref Alt Func.refGene PopFreqMax CLINSIG Classification chr1 43395635 43395635 C T exonic 0.12 Benign VUS chr1 43396414

我试图使用
awk
Classification
字段
NF+1
的值替换为
CLINSIG
字段
NF-1
的值,如果该值为
良性
。我认为
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
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
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  VUS
chr1    43396414    43396414    G   A   exonic  0.14    Benign  VUS
chr1    172410967   172410967   G   A   exonic  0.66    VUS
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

您可能是指
分类
字段
NF
,而不是
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

您不认为值得一提并发布您的awk脚本产生的语法错误吗?可能会使我们更容易帮助您。很抱歉,
awk
确实运行了。正如@James Brown所怀疑的,我指的是错误的
NF
变量。我仍在努力理解这一点,因为它使事情变得更容易。谢谢:)在你的问题中发布的awk脚本
awk-vofs='\t'{if($(NF-1)=“良性”)sub($(NF+1)=$(NF-1);print$0}'输入
无法运行,因为它包含语法错误。如果你运行了其他awk脚本,显然,这就是你应该让我们查看的。