132 votes

Comment faire ce que tête, queue, plus, moins, sed font dans Powershell ?

Sous Windows, en utilisant Powershell, quelles sont les commandes équivalentes à celles de linux head , tail , more , less et sed ?

206voto

Joey Points 148544

Get-Content (alias : gc ) est votre option habituelle pour lire un fichier texte. Vous pouvez ensuite filtrer davantage :

 gc log.txt | select -first 10 # head
gc -TotalCount 10 log.txt     # also head
gc log.txt | select -last 10  # tail
gc -Tail 10 log.txt           # also tail (since PSv3), also much faster than above option
gc log.txt | more             # or less if you have it installed
gc log.txt | %{ $_ -replace '\d+', '($0)' }         # sed

Cela fonctionne assez bien pour les petits fichiers, les plus gros (plus de quelques Mio) sont probablement un peu lents.

Les extensions de communauté PowerShell incluent des applets de commande pour des fichiers spécialisés (par exemple, Get-FileTail).

68voto

wisbucky Points 829

Voici les manières intégrées de faire head et tail . N'utilisez pas de tubes car si vous avez un gros fichier, il sera extrêmement lent. L'utilisation de ces options intégrées sera extrêmement rapide, même pour les fichiers volumineux.

 gc log.txt -head 10 
gc log.txt -tail 10
gc log.txt -tail 10 -wait # equivalent to tail -f

2voto

Si vous avez besoin d'interroger des fichiers journaux volumineux (ou petits) sous Windows, le meilleur outil que j'ai trouvé est le Log Parser 2.2 gratuit de Microsoft. Vous pouvez l'appeler depuis PowerShell si vous le souhaitez et il fera tout le gros du travail pour vous, et très rapidement aussi.

2voto

Patrick Burwell Points 39

"-TotalCount" dans cette instance répond exactement comme "-head". Vous devez utiliser -TotalCount ou -head pour exécuter la commande comme ça. Mais -TotalCount est trompeur - cela ne fonctionne pas en vous donnant VRAIMENT AUCUN compte...

 gc -TotalCount 25 C:\scripts\logs\robocopy_report.txt

Le script ci-dessus, testé dans PS 5.1, est la MÊME réponse que ci-dessous...

 gc -head 25 C:\scripts\logs\robocopy_report.txt

Alors, utilisez déjà '-head 25" !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X