awk来替代基于另一个
问题描述:
我试图使用awk
与CLINSIG
场NF-1
的值来代替Classification
场NF+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
答
你可能意味着Classification
场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
+0
非常感谢:) 。 – Chris
难道你不觉得这是值得一提的,并可以发布您的awk脚本是生产的语法错误?可以让我们更容易帮助你。 –
我很抱歉,'awk'确实运行了,正如@James Brown所怀疑的那样,我指的是错误的'NF'变量。我仍然试图理解这一点,因为它使事情变得更容易。谢谢:) – Chris
awk脚本发布在你的问题'awk -v OFS ='\ t''{if($(NF-1)==“Benign”)sub($(NF + 1)= $(NF -1); print $ 0}'input' **不能运行,因为它包含一个语法错误,如果你运行了一些其他的awk脚本,那么显然,这就是你应该让我们看看的东西 –