L'écho de la nième ligne à partir d'un fichier texte où " n " est un argument de ligne de commande
J'ai un fichier texte simple avec des chiffres comme:
12345
45678
34567
89101
J'ai besoin d'un lot qui sera de retour le n
ème ligne de ce fichier. n
doivent être prises à partir d'un argument de ligne de commande.
Je suis très nouveau pour lot de script, donc Merci d'avance pour toute aide sur ce.
est-ce windows ou unix?
OriginalL'auteur Marcos | 2011-06-20
Vous devez vous connecter pour publier un commentaire.
Pour obtenir le fichier de la nième ligne vous pouvez utiliser plus d' +n (line1 est n=0).
Diviser le reste du fichier, vous pouvez utiliser un
FOR /F
boucle.Cela fonctionne même si il y a des lignes vides avant la nième ligne.
Il pourrait être nécessaire de régler la fin de vie d'un caractère non utilisé ou de saut de ligne (par défaut
;
)eol
être définie à la ligne d'alimentation?Je l'ai trouvé ici, merci @jeb!
OriginalL'auteur jeb
Vous pouvez utiliser le traitement par lots l'extension de fichier.
jeton.chauve-souris
Si vous avez un fichier comme suit,
foo.txt
Et spécifier le numéro de ligne comme suit
Vous aurez
` and
n`?oups, j'ai enlevé "\n". Merci pour l'avis.
Btw, votre version supprime tous les
!
et parfois la^
à partir de la ligne de sortieHmm, je ne peux pas comprendre "pourquoi cela arrive".
Le
!
sont supprimés, comme l'expansion retardée est activé, seuls les handicapés expansion, vous pouvez accéder en toute sécurité%%1
voir aussi Script pour supprimer les caractères spéciaux dans les noms de fichiersOriginalL'auteur mattn
Vous pouvez utiliser
FOR /F
avec leskip
paramètre:La
skip
paramètre désigne leFOR /F
boucle doit passer le nombre spécifié de lignes au début. Le paramètre s'applique uniquement si vous spécifiez un numéro de ligne supérieure à 1. Si vous spécifiez un nombre moins d'un ou d'une non-nombre, le script génère une chaîne vide.OriginalL'auteur Andriy M
+1 pour Jeb de solution... je ne savais pas que vous pourriez utiliser le plus de commande pour passer les lignes comme ça!
Voici une autre méthode que j'utilise pour obtenir une ligne spécifique à partir d'un fichier (ou du multi-ligne de sortie d'un autre programme):
- Je utiliser findstr /n .* "Path\FileName.ext" pour ajouter des numéros de ligne, et pour s'assurer qu'aucune des lignes vides sont ignorées par la boucle for.
Je puis mettre "tokens=1* delims=:" pour séparer les numéros de ligne de la ligne de contenu.
Enfin, je compare le numéro de ligne courant (%%un) avec la ligne spécifiée par le %1 paramètre, et l'écho de la ligne de contenus (%%b) sur un match.
OriginalL'auteur Seth McCauley
Pour Trouver Nième au Mois de Caractères Dans la Ligne No. L --- Exemple Pour La Recherche De L'Étiquette
Enregistrer comme trouver de l'étiquette.cmd
Le Résultat Sera Votre Lecteur De E Label
Profiter de
OriginalL'auteur Amit
Basé sur Amit Réponse, j'ai fait un utilitaire appelé snip.cmd.
UTILISATION: snip FICHIER LIGNE FIRSTCHARACTER LASTCHARACTER
exemple:
foo.txt
snip foo.txt 3 0 33 donnera 77752e4c91ba96dcc6c2bb4bdcdbdec5
Voici mon code pour le snipe.cmd (vous pouvez ajouter de la bécassine à votre ligne de commande par la copie de la capture.cmd pour c:\Windows\System32):
OriginalL'auteur thebunnyrules
echo "enter the line number.."; read i; awk 'NR==$i' <file_name>;
OriginalL'auteur uddeep