Existe-t-il un moyen de simuler la commande * nix tail sur la ligne de commande Windows? J'ai un fichier et je veux un moyen de couper les n premières lignes de texte. Par exemple:
D:\>type file.txt
line one
line two
line three
D:\>*[call to tail]* > result.txt
D:\>type result.txt
line two
line three
windows
command-line
Chris Smith
la source
la source
head
uniquement les n premières lignes au lieu de les omettre?head
commande de style Unix , mais la sortie souhaitée semblait vouloirtail
. Il semble que les réponses concernenthead
et nontail
.tail
, mais le titre dithead
Réponses:
Pas d'équivalent exact. Cependant, il existe une commande DOS native "more" qui a une option + n qui commencera à sortir le fichier après la nième ligne:
Invite DOS:
La commande ci-dessus affichera tout après les 2 premières lignes.
C'est en fait l'inverse de la tête Unix :
Console Unix:
La commande ci-dessus n'imprimera que les 2 premières lignes du fichier.
la source
tail
commence à compter à partir de la fin du fichier. Alors,tail -2
imprimera les deux dernières lignes.-2
n'est pas un négatif. C'est juste une version abrégée de-n 2
(nombre de lignes). Malheureusement, beaucoup trop d'implémentations detail
ne prennent pas en charge-2
, ce qui le rend très incompatible avec leshead
implémentations qui l' accompagnent . Cela m'a ennuyé trop de fois.head -n -2
lequel est différent dehead -n 2
. Mais avec la queue, ce dernier n'existe pas.SI vous avez installé Windows PowerShell (je pense qu'il est inclus depuis XP), vous pouvez simplement exécuter à partir de cmd.exe:
Commandement de la tête:
Commande de queue:
ou, directement à partir de PowerShell:
mettre à jour
PowerShell 3.0 (Windows 8 et supérieur) a ajouté une
Tail
commande avec un aliasLast
.Head
et desFirst
aliasTotalCount
ont également été ajoutés.Ainsi, les commandes peuvent être réécrites comme
la source
head
au lieu detail
?Get-Content
a maintenant une commande tail. Par exemple,Get-content -Tail 5 file.txt
imprimera les cinq dernières lignes de file.txt. Merci d'avoir mis à jour votre réponse btw.où n = le nombre de lignes à afficher. Fonctionne rapidement et est exactement comme la
head
commande.la source
Vous pouvez obtenir CoreUtils de GnuWin32 , qui est une collection d'outils Unix standard, portés sur Windows.
Il contient, entre autres, de la tête.
la source
C'est un hack total, mais s'il s'agit d'un fichier énorme dont vous souhaitez simplement examiner le format, l'en-tête, etc. et que vous recherchez une solution, vous pouvez toujours simplement rediriger la sortie `` plus '' vers un nouveau fichier et CTRL-C rapidement. Les lignes de sortie ne peuvent pas être contrôlées avec précision et vous la tuerez probablement au milieu d'une ligne de sortie, mais c'est un moyen peu coûteux de récupérer un petit morceau d'un fichier autrement inutilisable.
Ex.
la source
Eh bien, cela va le faire , mais il est à peu près aussi vite qu'il semble (environ O (n * m), où n est le nombre de lignes à afficher et m est le nombre total de lignes dans le fichier):
Où "10" est le nombre de lignes à imprimer et "filename" est le nom du fichier.
la source
head
.(expr) > out.txt
- lors de l'envoi des résultats dans un fichier, sinon vous n'obtiendrez que la dernière ligne. Ou ajoutez -expr >> out.txt
.Powershell:
la source
Lorsque vous utilisez more + n que Matt a déjà mentionné, pour éviter les pauses dans les fichiers longs, essayez ceci:
plus +1 myfile.txt> con
Lorsque vous redirigez la sortie de more, elle ne s'arrête pas - et ici vous redirigez vers la console. Vous pouvez également rediriger vers un autre fichier comme celui-ci sans les pauses de plus si c'est le résultat final souhaité. Utilisez> pour rediriger vers un fichier et l'écraser s'il existe déjà, ou >> pour l'ajouter à un fichier existant. (Peut utiliser l'un ou l'autre pour rediriger vers con.)
la source
vous pouvez également utiliser Git bash où la tête et la queue sont également émulées
la source
Get-content -Tail n file.txt
avec PowerShell est la seule chose qui se rapproche detail
Linux.Le
Get-Content *filename* | Select-Object -last *n*
suggéré ci-dessus charge / analyse le tout. Inutile de dire qu'il n'était pas satisfait de mon fichier journal de 10 Go ... L'-Tail
option commence à la fin du fichier.la source
Si vous voulez la commande head, un moyen simple de l'obtenir est d'installer Cygwin. Ensuite, vous aurez tous les outils UNIX à votre disposition.
Si ce n'est pas une bonne solution, vous pouvez essayer d'utiliser findstr et faire une recherche pour l'indicateur de fin de ligne.
findstr sur MSDN: http://technet.microsoft.com/en-us/library/bb490907.aspx
la source
Voici une commande head native rapide qui vous donne les 9 premières lignes sous DOS.
Les 2 premiers caractères de chaque ligne seront le numéro de ligne.
la source
Un kit de ressources peut être téléchargé à partir d'ici: http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displayLang=en
Il contient un outil tail.exe mais il n'est compatible qu'avec certaines versions de Windows
(Copié de ce post: commande Tail pour Windows )
la source
dans PS, essayez d'utiliser la commande:
Cette commande peut également être mise en pipeline.
Exemple pour obtenir la première ligne:
ou pour obtenir la première ligne:
la source
FWIW, pour ceux qui ont juste besoin de couper un nombre indéterminé d'enregistrements de la tête du fichier, more> fonctionne bien. Ceci est utile simplement pour avoir un fichier plus petit avec lequel travailler dans les premières étapes du développement de quelque chose.
la source
Je n'ai pas essayé d'extraire une plage, mais j'ai pu obtenir une ligne en utilisant la commande DOS suivante:
Puisque la plupart des fichiers contiennent des espaces, cette commande extrait chaque ligne de tous les fichiers LOG et les numérote essentiellement à partir de 1 pour chaque fichier. Les résultats numérotés sont ensuite envoyés dans la deuxième
FIND
commande qui recherche la ligne étiquetée comme numéro 6.la source
Il y a un
head
utilitaire gratuit sur cette page que vous pouvez utiliser. Je n'ai pas encore essayé.la source
il retournera la première ligne de votre fichier dans cmd Windows dans la variable% line%.
la source
Comme réponse contemporaine, si vous exécutez Windows 10, vous pouvez utiliser le «sous-système Linux pour Windows».
https://docs.microsoft.com/en-us/windows/wsl/install-win10
Cela vous permettra d'exécuter des commandes linux natives à partir de Windows et ainsi d'exécuter tail exactement comme vous le feriez sous Linux.
la source
Je ne pense pas qu'il y ait moyen de sortir de la boîte. Il n'y a pas de telle commande dans DOS et les fichiers batch sont loin d'être limités pour le simuler (sans douleur majeure).
la source
Attention, l'utilisation du fichier de commandes pour, les jetons et la capacité de délimitation sur une entrée de texte inconnue peut être un désastre en raison de l'interprétation spéciale de caractères comme &,!, <, Etc. De telles méthodes devraient être réservées uniquement au texte prévisible.
la source