Afficher chaque cinquième colonne et les précédentes

Résolu/Fermé
S-Killer Messages postés 12 Date d'inscription lundi 9 mars 2015 Statut Membre Dernière intervention 13 mars 2015 - 10 mars 2015 à 15:53
S-Killer Messages postés 12 Date d'inscription lundi 9 mars 2015 Statut Membre Dernière intervention 13 mars 2015 - 13 mars 2015 à 17:31
Bonjour,
je dois afficher chaque cinquième colonne d'une ligne et les colonnes précédentes. C'est à dire que je dois parcourir la ligne et à chaque fois que je rencontre une colonne multiple de 5, je l'affiche ainsi que les colonnes précédentes.
j'ai utilisé
awk -F: '{for(i=5; i>=1; i--){print $i}}' passwd
mais ceci ne m'affiche que de la 5ème à la première colonne. j'ai besoin d'aide.

2 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
11 mars 2015 à 08:04
hello
pour clarifier, tu veux afficher les colonnes 5 1 2 3 4 10 6 7 8 9 etc ?
0
S-Killer Messages postés 12 Date d'inscription lundi 9 mars 2015 Statut Membre Dernière intervention 13 mars 2015
11 mars 2015 à 08:34
Oui justement c'est ce que je veux faire!
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
11 mars 2015 à 11:04
une méthode un peu simpliste si il y a moins de 21 champs
$ awk 'BEGIN {FS=OFS=":"; m=split("5:1:2:3:4:10:6:7:8:9:15:11:12:13:14:20:16:17:18:19", a)} {for(n=1; n<m; n++){if (c=$a[n])printf c FS; else {print ""; next}}}' fichier
0
S-Killer Messages postés 12 Date d'inscription lundi 9 mars 2015 Statut Membre Dernière intervention 13 mars 2015
11 mars 2015 à 11:22
Et si ma ligne est de la sorte
speech-dispatcher:x:107:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
sachant que les séparateurs sont les ":".
Ceci ne marche pas
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
11 mars 2015 à 14:07
quel doit etre le resultat ?
0
S-Killer Messages postés 12 Date d'inscription lundi 9 mars 2015 Statut Membre Dernière intervention 13 mars 2015 > dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024
11 mars 2015 à 15:13
"Speech Dispatcher,,,:speech-dispatcher:x:107:29"
c'est ce qui doit être le résultat. Et si j'avais 10 champs par exemple comme ceci
"speech-dispatcher:x:107:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh:bien:bonjour:rfin"
le résultat doit être
"Speech Dispatcher,,,:speech-dispatcher:x:107:29:rfin::/var/run/speech-dispatcher:/bin/sh:bien:bonjour"
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
11 mars 2015 à 15:37
j'obtiens ca avec le 2eme exemple
Speech Dispatcher,,,:speech-dispatcher:x:107:29:rfin:/var/run/speech-dispatcher:/bin/sh:bien:bonjour:
0
S-Killer Messages postés 12 Date d'inscription lundi 9 mars 2015 Statut Membre Dernière intervention 13 mars 2015 > dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024
11 mars 2015 à 16:16
Tu sais, je ne connais pas à l'avance ce que chaque ligne du fichier contient comme chaîne de caractères. Imagines que mon fichier ait 1000 lignes, s'il faut que j'écrive ça manuellement, je risque d'y passer toute une vie. la boucle que je dois faire, doit pouvoir le faire à ma place
0