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 :
si je fais une boucle ça donne ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ligne1 ligne2 ligne3 ligne4 ligne5
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 # cat /tmp/plik |awk '{print NR}' 1 2 3 4 5ce que je voudrais c'est ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 # cat /tmp/plik |awk 'END {print NR}' 5
Code pseudo-code : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager