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