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.
$3 > 7
et $4 > 10
. En combinant ces choses, nous obtenons:
awk -F, '$3 > 7 && $4 > 10' file