Commande awk

drsbmm -  
dubcek Messages postés 19021 Statut Contributeur -
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 19021 Statut Contributeur 5 637
 
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 19021 Statut Contributeur 5 637
 
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 19021 Statut Contributeur 5 637
 
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 13521 Statut Webmaster 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 13521 Statut Webmaster 426 > HostOfSeraphim Messages postés 7340 Statut Contributeur
 
:D
0
asevere Messages postés 13521 Statut Webmaster 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 19021 Statut Contributeur 5 637 > asevere Messages postés 13521 Statut Webmaster
 
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 13521 Statut Webmaster
 
On y trouvera peut-être "sl" un jour :-)

0
Utilisateur anonyme
 
Bonjour,

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

++
Poulpoul
0