2016-05-23 5 views
-2

I awk bin mit % jedes id berechnen die unter Verwendung, die läuft und ist ganz in der Nähe, außer wenn der # bei der Berechnung verwendet werden, ist gleich Null. Ich bin mir nicht sicher, wie man diese Bedingung in die awk, wie es häufig vorkommt, kodiert. Vielen Dank :).awk Berechnung nicht in Fällen, in denen Null verwendet wird

file1

ABCA2 9 232 
ABHD12 211 648 
ABL2 83 0 

file2

CC2D2A 442 
(CCDC114) 0 

awk mit Fehler

awk 'function ceil(v) {return int(v)==v?v:int(v+1)} 
>   NR==FNR{f1[$1]=$2; next} 
>  $1 in f1{print $1, ceil(10000*(1-f1[$1]/$3))/100 "%"}' all_sorted_genes_base_counts.bed all_sorted_total_base_counts.bed > total_panel_coverage.txt 
awk: cmd. line:3: (FILENAME=file1 FNR=3) fatal: division by zero attempted 
+0

Welches Ergebnis sollten Sie bekommen, wenn '$ 3' Null ist? 'N/A'? – dawg

+0

Ich entschuldige mich dafür, dass ich nicht beide Eingabedateien gepostet habe und werde meinen Post bearbeiten .... Es tut mir leid, dass ich in eine Besprechung gerannt bin. Vielen Dank :). – Chris

+0

"N/A" wäre perfekt ... Danke :). – Chris

Antwort

3

Wenn Sie ein Skript, das fehlschlagen s, wenn zwei Eingabedateien Parsen, ich kann mir nicht vorstellen, warum Sie nur 1 Beispiel-Eingabedatei zeigen würde und keine erwartete Ausgabe wodurch sichergestellt

  1. wir können nicht unsere möglichen Lösungen gegen eine Probe testen Sie denken, ist relevant und
  2. wir haben keine Möglichkeit zu wissen, ob unser Skript tut, was Sie wollen oder nicht,

aber im allgemeinen gegen einen Null Nenner schützen Sie Code wie verwenden würde:

awk '{print ($2 == 0 ? "NaN" : $1/$2)}' 

, z.B.

$ echo '6 2' | awk '{print ($2 == 0 ? "NaN" : $1/$2)}' 
3 

$ echo '6 0' | awk '{print ($2 == 0 ? "NaN" : $1/$2)}' 
NaN 
Verwandte Themen