Variable pour le nombre de lignes dans un fichier
Je suis en train de mettre le nombre de lignes d'un fichier dans une variable de type entier.
C'est de cette façon que je suis en train de faire
typeset -i x
x=`wc -l $1`
où $1 est la ligne de commande arg
Le problème est que, wc-l donne un numéro et le nom du fichier: 5 bla
Est-il un moyen de ne mettre le nombre dans x?
OriginalL'auteur JA3N | 2012-02-27
Vous devez vous connecter pour publier un commentaire.
Vous pourriez faire
cat $1 | wc -l
à la place.Ou
wc -l $1 | cut -d " " -f 1
.cat $1 | wc -l
œuvres? Si vous n'avez pas l'espritPas de doute Oli sera mise à jour de la réponse, mais en gros, c'est que, si
wc
ne sais pas le nom de son fichier d'entrée (comme lorsque l'entrée est à venir via l'entrée standard), il n'a pas l'imprimer.OriginalL'auteur Oliver Charlesworth
Cela permet d'éviter une inutile l'utilisation de
cat
et toutes les fourches, et travailler sur un chemin contenant des espaces et même des retours à la ligne.OriginalL'auteur l0b0
avec awk
OriginalL'auteur Selman Ulug
Ou avec
sed
...Ou, en supposant que le premier espace est celui après le nombre:
s/ .*$//
plutôt que d'utiliser le registre de substitution.😀 merci... maintenant que je vois les autres réponses, il ne se sent moche, mais c'était la première chose qui surgit dans ma tête. La ligne commence par des espaces, et donc la suppression de la première de l'espace ne fonctionne pas.
wc
de sortie commence avec des espaces? Quel système d'exploitation êtes-vous? La Mine se trouve à plat contre la gauche.OSX, je suppose une autre façon Mac BSD est funky
OriginalL'auteur mVChr
Vous pouvez utiliser le shell pour supprimer le nom de fichier. Cela a l'avantage de ne pas commencer une 2ème processus
cat
,cut
,sed
ouawk
:Vous pouvez également réécrire
nb_lines=${var%% *}
avecnb_lines=${var/*/}, but the 2nd form is less portable being
bash spécifiques.Mise à jour
J'ai lu ci-dessus que certains
wc
sortie de commencer avec des espaces, de sorte que le ci-dessus peut être réécrite:À l'aide de
echo
pour se débarrasser des espaces supplémentaires.OriginalL'auteur jfg956
Dans le cas où vous êtes en essayant de mettre des numéros de ligne dans le fichier que je vous recommande.
Dans windows:
Dans Linux:
J'séparés parce que dans windows, on ne peut pas s'
cat -n
donc dû utiliser awk.OriginalL'auteur CrackNRock
OriginalL'auteur pedram bashiri