Nombre de lignes
clarabelle
-
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
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
Configuration: Windows XP Firefox 1.5.0.12
4 réponses
-
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-
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...
-
-
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]$
:-))
-
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...
-
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.
- 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
-
-
[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]$
;-))