Sur les fenêtres, en utilisant Powershell, quelles sont les commandes équivalentes à linux de head
, tail
, more
, less
et sed
?
windows
powershell
Yue Zhang
la source
la source
notepad
comme base, je suggérerais de regarder des éditeurs de texte alternatifs, il existe de nombreuses alternatives (gratuites et payantes). Tous sont supérieurs au bloc-notes (bien que ce ne soit pas vraiment un défi).Réponses:
Get-Content
(alias:)gc
est votre option habituelle pour lire un fichier texte. Vous pouvez ensuite filtrer davantage: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 les fichiers spécialisés (par exemple, Get-FileTail).
la source
-last 2
CSV de 1 Go. Boisson chaude: ☕Get-Content -Tail 2
place. C'est nettement plus rapide.gc log.txt | %{ $_ -replace '\d+', '($0)' } # sed
ce n'est pas vraiment l'outil sed car il ne remet pas de contenu. Il a besoin de Set-Content.-Last
est lent pour la même raisonawk
serait lent pour la même tâche: il doit d'abord consommer complètement le flux. Voilà pourquoiGet-Content -Tail
existe. Et il n'y a pashead
parce qu'il ne rentre pas dans les conventions de dénomination et que son objectif est déjà atteintSelect-Item
.-head
. Voir ma réponse stackoverflow.com/a/41626586/1081043Voici les moyens intégrés de faire
head
ettail
. N'utilisez pas de tuyaux, 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.la source
| select -last
utilise des tuyaux. J'utilise-tail
sans tuyaux. Mais si jamais vous trouvez deux réponses contradictoires, vous pourriez probablement faire confiance à la personne qui a une réputation beaucoup plus élevée. En outre, vous pouvez simplement essayer les deux méthodes sur un gros fichier. Ce sera très évident sur un gros fichier.more.exe
existe sous Windows, les ports deless
sont faciles à trouver (et les extensions de communauté PowerShell , PSCX, en incluent un).PowerShell ne fournit pas vraiment d'alternative à des programmes séparés pour l'un ou l'autre, mais pour les données structurées, cela
Out-Grid
peut être utile.Head
etTail
peuvent tous deux être émulés enSelect-Object
utilisant respectivement les paramètres-First
et-Last
.Sed
les fonctions sont toutes disponibles mais structurées assez différemment. Les options de filtrage sont disponibles dansWhere-Object
(ou viaForeach-Object
et dans certains états pour les plages). D'autres opérations de transformation peuvent être effectuées avecSelect-Object
etForeach-Object
.Cependant, lorsque PowerShell passe des objets (.NET) - avec toute leur structure typée, par exemple. les dates restent des
DateTime
instances - plutôt que de simples chaînes, que chaque commande doit analyser elle-même, une grande partiesed
et d'autres programmes de ce type sont redondants.la source
"-TotalCount" dans cet exemple 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 ...
Le script ci-dessus, testé dans PS 5.1 est la même réponse que ci-dessous ...
Alors utilisez déjà '-head 25 "!
la source
Si vous avez besoin d'interroger des fichiers journaux volumineux (ou petits) sous Windows, le meilleur outil que j'ai trouvé est le logiciel gratuit Log Parser 2.2 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.
la source
J'ai de meilleures solutions:
la source
Vous n'obtenez pas toutes les erreurs avec le code pushpop BTW, votre code ne fonctionne qu'avec l'option "sed". Tout le reste ignore tout sauf gc et path.
la source