2017-10-13 2 views
0

J'essaye de filtrer un fichier basé sur des valeurs de colonnes spécifiques, en ignorant la ligne d'en-tête.awk pour filtrer un fichier avec ~ 60 champs et> 1500 entrées

La commande j'ai essayé:

awk '(NR = 1) || \ 
    (($7>=0.8) && ($13>-0.8) && ($19>=0.8) && \ 
     ($25>=0.8) && ($31>=0.8) && ($37>=0.8) && \ 
     ($39=3) && ($40=3))' infile.txt > outfile.txt 

Quand je lance cela, le outfile.txt résultant est exactement le même que infile.txt, même si j'ai vérifié qu'il existe des valeurs dans le infile.txt en colonnes 7, 13, 19, 25, 31 et 37 ci-dessous 0,8, et de même, les valeurs dans les colonnes 39 et 40 ci-dessous 3.

Quelqu'un peut-il s'il vous plaît aidez-moi avec une solution?

Merci!

ADIP

avons inclus un exemple infile.txt avec les premières lignes d'un de mes fichiers ici:

https://drive.google.com/file/d/0B8LuZenMuFYGekZwd1dpcks2Tkk/view?usp=sharing

+0

Pouvez-vous ajouter une petite partie de votre infile.txt? –

+1

Sans regarder l'entrée, je voudrais changer la première partie à 'NR == 1' –

+1

Ooh. Et changer '($ 39 = 3) && ($ 40 = 3)' à '$ 39 == 3 && $ 40 == 3' –

Répondre

2

poussés à convertir commentaire à répondre. ;-)

Deux erreurs que vous avez faites dans votre awk probablement résoudre votre problème: changement NR = 1-NR==1 et changement ($39=3) && ($40=3)-$39==3 && $40==3

message à emporter: il y a une différence entre l'affectation et la comparaison ===.