J'essaie de mettre le nombre de lignes dans un fichier dans une variable entière.
C'est comme ça que je le fais p> où 1 $ est La ligne de commande arg p> Le problème est que WC -L donne un numéro et le nom de fichier comme: 5 bla p> est un moyen de mettre le nombre en x? p > p>
7 Réponses :
vous pourriez faire ou chat $ 1 | wc -l code> à la place. p>
WC -L $ 1 | Cut -D "" -F 1 code>. p>
Merci! Pouvez-vous expliquer comment Cat $ 1 | WC -L code> fonctionne? Si cela ne vous dérange pas
Non doute que Oli mettra à jour la réponse, mais c'est fondamentalement que, si wc code> ne connaît pas le nom de son fichier d'entrée (tel que lorsque l'entrée entrait via une entrée standard), elle n'imprime pas ce.
wc -l $1 | awk '{print $1}'
with awk
ou avec ou, en supposant que le premier espace est celui après le numéro: p> sed code> ...
Hmm, pas comme lisible i> comme les autres, mais je me suis promis que j'avais upvote toute solution qui utilise deux processus ou moins de processus :-) Il aurait peut-être été plus facile de supprimer le premier espace: S /. * $ // code> plutôt que d'utiliser la substitution de registre.
: D Merci ... Maintenant que je vois les autres réponses, il se sent laide, mais la première chose qui est tombée dans ma tête. La ligne commence par des espaces, de sorte que la suppression du premier espace ne fonctionnerait pas.
wc code> sortie commence par des espaces? Dans quel système d'exploitation êtes-vous? La mienne est assise sur la gauche.
OSX, je suppose qu'un autre moyen Mac BSD est génial
Vous pouvez utiliser la coquille pour supprimer le nom du fichier. Cela a l'avantage de ne pas démarrer un 2e processus comme cat code>, couper code>, sed code> ou awk code>: #var=$(wc -l _your_file_)
var=" 3 file"
var=$(echo $var)
nb_lines=${var%% *}
x=$(wc -l < "$1") This avoids a useless use of cat and any forks, and would work on a path containing spaces and even newlines.
Si vous essayez de mettre des numéros de ligne dans le fichier que je recommande.
dans Windows: p> sous Linux: p> Je les ai séparé parce que dans Windows, on ne peut pas exécuter Cat -N Code> a donc dû utiliser AWK. P> P>
filename=âtest.txt'
line_no=$(cat ${filename} | wc -l)
echo ${line_no}