Commande awk

drsbmm -  
dubcek Messages postés 19031 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
svp...j'ai des problemes avec la commande awk.est ce que vous pouvez m'indiquer ;comment peut on afficher le contenud'un fichier en commançant par la dernier ligne jusqu'à la premiere...
exemple:
cat file
111111111111111
222222222222222
333333333333333

devient à l'aide de awk :

333333333333333
222222222222222
111111111111111

et merci.
A voir également:

7 réponses

dubcek Messages postés 19031 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
hello

{x[NR]=$0}
NR = No de la ligne lue, $0 son contenu, je stocke chaque ligne dans un tableau x avec le No de ligne comme index

END
le code suivant est exécuté après la lecture de la dernière ligne

{for (n=NR;n;n--)print x[n]}
je boucle depuis la dernière ligne lue (n=NR), tant que n est non nul (n) ,en décrémentant n (n--), j'affiche le contenu de x[n]

@drsbmm la boucle for est dans le END parce qu'il faut attende d'avoir lu la dernière ligne pour afficher
1
drsbmm
 
merci beaucoup dubcek...maintenant j'ai bien compris
0
dubcek Messages postés 19031 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
on peut aussi inverser les lignes d'un fichier avec vi
:g/^/m0
1
HostOfSeraphim Messages postés 7340 Statut Contributeur 1 608
 
Regarde du côté de la commande tail... ;-)

(pour afficher les X dernières lignes d'un fichier, en commencant par la dernière : tail -n X /chemin/fichier)

0
dubcek Messages postés 19031 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
hello
awk '{x[NR]=$0} ; END { for (n=NR;n;n--)print x[n]}'
0
drsbmm
 
merci dubcek,
je vais essayer,ce que vous avez dit..
0
drsbmm
 
svp,dubcek.
vous pouvez m'expliquer pourquoi vous avez met la boucle <gras>for</gras> dans le END ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
Bonjour,

Dubcek, serait il possible de détailler votre commande ?

en vous remerciant par avance

++

Poulpoul
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Moi j'utiliserait la commande tac simplement, mais si c'est avec Awk... la commande de Dubeck me parait la plus immédiate:
On remplis un tableau avec chaque ligne lues, et à la fin (END) on parcours le tableau à l'envers...
0
HostOfSeraphim Messages postés 7340 Statut Contributeur 1 608
 
Ah tiens, tac, je l'avais oublié... le fameux "cat" à l'envers.

D'ailleurs, pour les félinophobes, le paquet "dog" existe aussi et fait la même chose que cat... sauf que c'est dog.

0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > HostOfSeraphim Messages postés 7340 Statut Contributeur
 
:D
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > HostOfSeraphim Messages postés 7340 Statut Contributeur
 
Perso, la commande tac m'a toujours doucement fait rire, jusqu'à ce que je la trouve dans un questionnaire de certification LPI...

0
dubcek Messages postés 19031 Date d'inscription   Statut Contributeur Dernière intervention   5 641 > asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention  
 
Pensons aux non-linuxiens qui n'ont pas tac : Solaris, HP-UX, AIX ...
on peut aussi faire : cat -n file | sort -rn | cut -<je ne sais plus quoi>
0
HostOfSeraphim Messages postés 7340 Statut Contributeur 1 608 > asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention  
 
On y trouvera peut-être "sl" un jour :-)

0
Utilisateur anonyme
 
Bonjour,

merci dubcek, c'est très clair comme explication.

++
Poulpoul
0