2016-10-04 5 views
1

Ich bin okay mit grep, aber ich weiß, dass awk ist wahrscheinlich viel effizienter in diesem Fall. Ich lerne aber noch nicht ganz dort.Drucken von Zeilen, die größer als zwei Felder sind

Ich habe einige Daten:

record1,14.2,10,50 
record2,10.7,5,- 
record3,9.3,6.8,10 
record4,8,2.7,10 
record5,5.5,22.4,10 
record6,3,23.6,55 
record7,2.7,14.6,- 

Ich mag würde nur die Linien drucken, die größer als 3 von größer als 7 in Feld ist, und größer als 10 (während jeder Dashs Entfernen) im Feld 4. Somit der Ausgang sein würde:

record1,14.2,10,50 
record6,3,23.6,55 

ich habe gespielt um awk '{print $3 > 7}' verwenden, aber wie ich schon sagte, ich bin mit awk und Bedingungen nicht groß. Ich könnte es mit Grep machen, aber ich denke, das ist ineffizient. Jede Hilfe wird sehr geschätzt.

Antwort

4

Die Struktur eines awk-Skripts ist condition { action }. Die Standardaktion ist { print }, die den gesamten Datensatz druckt.

  • Ihre Bedingungen sind $3 > 7 und $4 > 10.
  • Ihr Feldtrennzeichen ist ein Komma.

die Dinge, die Kombination erhalten wir:

awk -F, '$3 > 7 && $4 > 10' file 
Verwandte Themen