Nombre de lignes

clarabelle -  
 clarabelle -
Bonjour,

Je débute avec les commandes unix et j'aurais une petite question à qui pourrait me donner un coup de main.
Je cherche à récupérer le nombre de lignes dans un fichier. J'ai donc utilisé wc -l, ça marche. Mais le truc c'est que je voudrais stocker ce nombre de lignes dans une variable pour pouvoir l'utiliser après et c'est ça que je ne parviens pas à faire.
J'ai fait set nb = wc -l nomfichier
et quand je lui demande de m'afficher la valeur de nb (echo $nb) il m'envoie promener.
J'ai essayé set nb = 'wc -l nomfichier' mais ça ne marche pas non plus, il m'affiche pour valeur de nb la chaîne de caractères wc -l nomfichier du coup.
Est-ce que quelqu'un pourrait me dépanner ?
Merci d'avance

4 réponses

dieu
 
tu y était presque

c'est
nb=`wc -l fichier`
et pas
nb='wc -l fichier'

la backquote et pas la quote en français

ou alors

nb=$(wc -l fichier)

ensuite pour utiliser le contenu de nb c'est

echo $nb
mais bien sur

echo "titi $nb toto" permet d'inserer le nb dans un echo complet de texte
0
clarabelle
 
Super ! Ca marche ! Merci beaucoup ! J'étais donc pas si à la masse que ça en fait !
Pendant que j'y suis, est-ce que je peux profiter de ta sympathie pour te poser une autre question ? (désolée, c'est vraiment mes premiers pas et du coup je rame bien comme il faut).
En fait je voudrais créer autant de répertoires et/ou de fichiers qu'il y a de lignes dans un fichier "donnees_entree" (qui est en fait un fichier contenant une valeur par ligne, chacune étant une valeur différente d'une donnée d'entrée nécessaire pour lancer un calcul avec un logiciel).
Est-ce que tu sais comment créer des répertoires du genre "répertoire_1", "répertoire_2", "répertoire_3" etc, jusqu'à "répertoire_nbtotal" ? Et pareil avec des fichiers ? Ce que je teste depuis tout à l'heure ne marche pas...
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

Je rajouterai juste un petit truc, si tu veux récupérer que le nombre de ligne il faut "filtrer" le fichier à travers un tube (pipe en anglais symboliser par "|"), sans quoi ta variable contiendra aussi le nom du fichier :
[tmpfs]$ wc -l plop
19 plop
[tmpfs]$ cat plop | wc -l
19
[tmpfs]$
:-))
0
clarabelle
 
Cool ! Effetivement c'est plus pratique à utiliser comme ça. Merci !
Si tu as une idée sur ma deuxième question je suis preneuse aussi...
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Tu veux créer uniquement des répertoires numérotés avec un nom générique (répertoire_1, répertoire_2, etc.), ou des répertoires ayant pour nom la valeur de chaque ligne de ton fichier de référence ?

Poste un exemple précis de ce que tu veux...
0
clarabelle
 
Par exemple si j'ai trois lignes dans mon fichier d'entrée je voudrais créer trois répertoires : répertoire_1, répertoire_2, répertoire_3 et/ou trois fichiers fichier_1, fichier_2, fichier_3. Peu importe ce qu'il y a dans les lignes en question.
0
elbeho > clarabelle
 
Clarabelle,

Si tu debutes en ligne de commande mais que tu te debrouilles en anglais, vas jeter un oeil sur :
https://twitter.com/scottklarr/topic/115/linux-unix-cheat-sheets---the-ultimate-collection
C'est une collection de petits guides sur les commandes Unix et quelques utilitaires.

Cordialement
0
clarabelle > elbeho
 
Ok je vais aller voir ça, ça pourra m'être bien utile je pense.
Merci pour le tuyau !
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
[tmpfs]$ ls
plop

[tmpfs]$ cat plop
Une ligne
puis une autre
et encore une autre

[tmpfs]$ for i in $(seq $(cat plop | wc -l));do mkdir "repertoire_$i";done

[tmpfs]$ ls
plop  repertoire_1/  repertoire_2/  repertoire_3/

[tmpfs]$ for i in $(seq $(cat plop | wc -l));do touch "fichier_$i";done

[tmpfs]$ ls
fichier_1  fichier_2  fichier_3  plop  repertoire_1/  repertoire_2/  repertoire_3/

[tmpfs]$
;-))
0
clarabelle
 
Super ! Ca marche !
Merci beaucoup, vraiment !
C'est fou comme quand on a la réponse ça semble pas si difficile que ça et quand on la cherche ça semble insurmontable...
Bon j'espère pouvoir m'en sortir pour la suite. Merci encore !
0