2016-08-02 16 views
-1

ich awk zu verwenden Ich versuche, den Wert des Classification Feld NF+1 mit dem Wert des CLINSIG Feld NF-1 zu ersetzen, wenn dieser Wert Benign ist. Ich denke, die awk ist in der Nähe, aber zur Zeit bekomme ich eine leere Datei. Was ist los mit dir?awk Wert des Feldes zu ersetzen, basierend auf einem anderen

Eingang

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 

gewünschte Ausgangs

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

Glauben Sie nicht, es wert sei zu erwähnen, und die Buchung der Syntaxfehler Ihre awk-Skript erzeugt? Es könnte uns leichter machen, Ihnen zu helfen. –

+0

Ich entschuldige mich, aber das 'awk' lief es war als @James Brown vermutete, ich bezog mich auf die falsche' NF' Variable. Ich versuche immer noch, dies zu verstehen, da es die Dinge viel einfacher macht. Danke :) – Chris

+0

Das awk-Skript in Ihrer Frage 'awk -v OFS =' \ t '' {if ($ (NF-1) == "Gut") sub ($ (NF + 1) = $ (NF -1); print $ 0} 'input' ** ** kann nicht laufen, da es einen Syntaxfehler enthält. Wenn Sie ein anderes awk-Skript ausgeführt haben, dann sollten Sie sich das natürlich ansehen. –

Antwort

2

Sie wahrscheinlichbedeutenFeld NF, nicht 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

Vielen Dank :) . – Chris

Verwandte Themen