Supprimer la ligne après avoir compté le nombre de colonnes dans un fichier texte

Je dois supprimer dynamicment une ligne après avoir compté le nombre de colonnes qu’elle contient. Par exemple, si le nombre de colonnes de la ligne est inférieur à X , supprimez la ligne entière. J’ai un fichier texte contenant plus de 100 lignes.

Voici ce que j’ai à ce jour, qui compte le nombre total de colonnes dans chaque ligne du fichier texte …

Exemple de texte:

 KGAI 2 2 40 50 50 98 75 10 35 40 15 25 15 55 KGED 3 3 15 25 20 60 60 20 50 25 15 25 20 40 KGFL 1 10 3 4 3 85 25 KGHG 15 20 40 20 20 20 20 KGKJ 20 80 25 20 25 97 50 20 60 45 30 30 25 30 KGNR 2 30 4 5 5 25 90 10 35 15 15 15 10 20 KGON 1 1 20 10 5 85 65 5 20 30 15 10 15 25 KGTB KHEF 2 2 20 30 50 98 60 10 30 25 10 15 10 45 

Code:

 cat text_data | awk 'BEGIN{FS=" "};{print NF}' 

Sortie:

 15 15 8 8 15 15 15 1 15 

Faites le contraire: imprimez simplement ceux qui ont au moins X colonnes:

 awk -v cols=5 'NF>=cols' file 

Autrement dit, définissez la variable cols à la valeur de la quantité minimale de cols que vous voulez que la ligne ait. Chaque fois que c’est vrai, la ligne sera imprimée.

Dans ce cas, il renvoie:

 KGAI 2 2 40 50 50 98 75 10 35 40 15 25 15 55 KGED 3 3 15 25 20 60 60 20 50 25 15 25 20 40 KGFL 1 10 3 4 3 85 25 KGHG 15 20 40 20 20 20 20 KGKJ 20 80 25 20 25 97 50 20 60 45 30 30 25 30 KGNR 2 30 4 5 5 25 90 10 35 15 15 15 10 20 KGON 1 1 20 10 5 85 65 5 20 30 15 10 15 25 KHEF 2 2 20 30 50 98 60 10 30 25 10 15 10 45