Lignes d’impression supérieures à deux champs

Je suis d’accord avec grep , mais je sais que awk est probablement beaucoup plus efficace dans ce cas. J’apprends mais pas encore tout à fait.

J’ai des données:

 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,- 

Je voudrais imprimer uniquement les lignes supérieures à 7 dans le champ 3 et supérieures à 10 (en supprimant les tirets) dans le champ 4. Ainsi, le résultat serait le suivant:

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

J’ai joué avec awk '{print $3 > 7}' , cependant, comme je l’ai dit, je ne suis pas très fort avec awk et les conditions. Je pourrais le faire avec grep mais j’ai l’impression que c’est inefficace. Toute aide est grandement appréciée.

La structure d’un script awk est la condition { action } . L’action par défaut est { print } , qui imprime l’intégralité de l’enregistrement.

  • Vos conditions sont $3 > 7 et $4 > 10 .
  • Votre séparateur de champs est une virgule.

En combinant ces choses, nous obtenons:

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