[awk] Récupérer le nombre de ligne total de la variable NR
Bonjour,
je me casse la tête depuis ce matin sur un truc qui je pense est simple mais dont j'ai beau retourné dans tout les sens je n'arrive pas à avoir le résultat que je veux.
En gros voici mon problème, j'ai un fichier comme l'/etc/passwd sous linux dont je souhaite afficher toute les ligne sauf la dernière, je sais c'est basique et il y a de multiple façon de le faire simplement :) mais si je suis ici c'est parce que je veux le faire avec une certaine manière ;)
Je voudrais donc pourvoir faire cette opération en utilisant la variable NR de awk, du style :
1) Connaitre le nombre de ligne avec NR
2) Faire une boucle du style "tant que i < NR; afficher la ligne; ++i"
Le problème est que NR n'affiche le total que si on lui met un END à la fin, donc si je fais ma boucle ça va afficher plusieurs fois la même chose à chaque énumération de la la ligne. Par conséquent est-il possible de récupérer le total de la variable NR dès le début et de l'utiliser comme nombre fixe pour faire la boucle ?
Concrètement j'ai un fichier toto de ce style :
Code:
1 2 3 4 5
| ligne1
ligne2
ligne3
ligne4
ligne5 |
si je fais une boucle ça donne ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # cat /tmp/plik |awk '{i=0; while (i < NR) {print; i++;}}'
ligne1
ligne2
ligne2
ligne3
ligne3
ligne3
ligne4
ligne4
ligne4
ligne4
ligne5
ligne5
ligne5
ligne5
ligne5 |
Code:
1 2 3 4 5 6
| # cat /tmp/plik |awk '{print NR}'
1
2
3
4
5 |
Code:
1 2
| # cat /tmp/plik |awk 'END {print NR}'
5 |
ce que je voudrais c'est ça:
Code:
1 2 3 4 5
| #<super awk de la mort qui tue> NR ?
ligne1
ligne2
ligne3
ligne4 |
Je ne sais pas si c'est faisable ?
Merci d'avance.