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脚本,显然,这就是你应该让我们查看的。