Das Entfernen von Zeilen mit Werten, die höher als der festgelegte Schwellenwert sind

Das Entfernen von Zeilen mit Werten, die höher als der festgelegte Schwellenwert sind

Ich habe eine Datendatei wie:

Daten:

arht    -0.1006 0.0001  0.0147  100     arht    0.0012  -0.0002 0.0182  100
arht    -0.0006 1.0006  0.0133  100     arht    0.1011  0.0003  0.0175  100
bcmn     0.0005 0.0011  0.0165  100     bcmn    0.0015  0.0007  0.0197  100
ffgf    -0.0009 0.0012  0.0121  100     ffgf    0.0007  0.0010  0.0150  100
ffgf    -0.0004 0.0009  0.0105  100     ffgf    0.1008  0.0006  0.0151  100

Ich verwende den folgenden Befehl, um die Zeilen zu extrahieren, die Werte enthalten, die höher sind als die absoluten 0,10 für die Spalten 2-3-4 und 7-8-9:

awk 'sqrt($2*$2)<=.1 || sqrt($3*$3)>=.1 || sqrt($4*$4)>=.1 || sqrt($7*$7)>=.1 || sqrt($8*$8)>=.1 || sqrt($9*$9)>=.1 {print}' data > output

Ich muss diese Zeilen aus der Datendatei entfernen. Wie kann ich den obigen Code ändern?

Antwort1

Scheint eine doppelte Frage zu seinWerte, die größer als ein Schwellenwert sind, in einer Textdatei extrahieren? Wenn ja, müssen Sie den ersten Term Ihres Codes korrigieren:

awk 'sqrt($2*$2)>=.1 || sqrt($3*$3)>=.1 || sqrt($4*$4)>=.1 || sqrt($7*$7)>=.1 || sqrt($8*$8)>=.1 || sqrt($9*$9)>=.1) {print}' data >output

Dann müssen Sie nur noch ein Negierungszeichen (!) davor setzen, um das gewünschte Ergebnis zu erhalten:

awk '!(sqrt($2*$2)>=.1 || sqrt($3*$3)>=.1 || sqrt($4*$4)>=.1 || sqrt($7*$7)>=.1 || sqrt($8*$8)>=.1 || sqrt($9*$9)>=.1) {print}' data > output

verwandte Informationen