Ich möchte Zeilen löschen, in denenalle Elemente ungleich Nullsind kleiner als eins
Meine Datei ist
a 2 0 0 0 9
b 3 0 0 0.7 13
c 0.3 0.5 0 0 0
d 0.4 7.96681779026634e-05 0 0
Die erwartete Ausgabe ist
a 2 0 0 0 9
b 3 0 0 0.7 13
Ich bin Anfänger. Ich habe versucht awk '{for(i=2;i<=NF;i++){if($i+0=0 print $0; else < 1) next}} 1'
, einen vorherigen Code zu bearbeiten, wie indieser Link, aber ich mache etwas falsch.
Antwort1
Versuchen:
$ awk '{f=0; for(i=2;i<=NF;i++) if($i+0!=0 && $i+0>=1)f=1} f' file
a 2 0 0 0 9
b 3 0 0 0.7 13
Der Code verwendet eine Variable f
. Wenn f
sie als wahr (ungleich Null) endet, drucken wir die Zeile.
f=0
Setzen Sie für jede Zeile zunächst den Wert
f
auf „false“ (nicht drucken).for(i=2;i<=NF;i++) if($i+0!=0 && $i+0>=1)f=1
Wenn ein beliebiges Element ungleich Null und größer als Eins ist, wird es
f
auf1
(true) gesetzt.f
Wenn
f
wahr (ungleich Null) ist, drucken Sie diese Zeile.