Faire une liste grace a awk
Résolu
trauqnej
Messages postés
162
Statut
Membre
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je voudrais afficher par lettre d'alphabet le nombre de ligne de mon fichier
code basique :
awk -F"|" ' BEGIN{lettre=ARGV[2];delete ARGV[2]}; $3 ~ /^A/ {print $3}}'
repertoireTel.csv | wc -l
là c'est bon mais
voici le code "amélioré":
for x in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z;
do echo $lettre ;
awk -F"|" ' BEGIN{lettre=ARGV[2];delete ARGV[2]}; $3 ~ /^lettre/ {print $3}}'
repertoireTel.csv $lettre | wc -l ;
done
là , cela ne fonctionne pas... Une idée ?
je voudrais afficher par lettre d'alphabet le nombre de ligne de mon fichier
code basique :
awk -F"|" ' BEGIN{lettre=ARGV[2];delete ARGV[2]}; $3 ~ /^A/ {print $3}}'
repertoireTel.csv | wc -l
là c'est bon mais
voici le code "amélioré":
for x in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z;
do echo $lettre ;
awk -F"|" ' BEGIN{lettre=ARGV[2];delete ARGV[2]}; $3 ~ /^lettre/ {print $3}}'
repertoireTel.csv $lettre | wc -l ;
done
là , cela ne fonctionne pas... Une idée ?
4 réponses
-
hello
pas besoin de lire 26 fois le fichierawk -F "|" '$3 ~ /^[A-Z]/ {x[substr($3, 1, 1)]++} END{for(n in x)print n, x[n]}' repertoireTel.csv -
salut,
for x in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z; do awk -F"|" ' $3 ~ /^lettre/ {print $3; n++}END{print n}' lettre=$x repertoireTel.csv doneça devrait aller, mais sans le fichier source, et sans la sortie désirée...
si c'est du bashfor x in {A..Z} -
la solution de dubcek est bonne
celle de qqchquicommenceparQ me met 26 ligne blanche.
c'est dommage, parce que j'aurais voulu savoir comment passer des variables
dans le cas de "^lettre" en adéquation avec "lettre=$x"
mais bon, j'ai la solution de mon pb donc résolu -
pour passer une variable dans awk et l'utilser comme critère de recherche:
$ x="C" ; printf "%c\n" {A..D} | awk -v x=$x '$0 ~ "^" x { print}' C $