J'ai besoin d'un équivalent de la head
commande Unix (afficher les N premières lignes de la sortie). Voici ce que j'utilise actuellement:
tasklist | find /N " " | findstr /r \[[0-9]\]
Le code ci-dessus affiche les 10 premières lignes de tasklist
la sortie de. find /N " "
ajoute un numéro de ligne au début de chaque ligne tout en findstr /r \[[0-9]\]
extrayant les 10 premières lignes à l'aide de l'expression régulière.
Le code ci-dessus fonctionne, mais je dois spécifier n'importe quelle plage . Étant donné que les expressions régulières ne sont pas implémentées conformément aux normes de Windows, je ne peux rien faire d'autre.
Comment puis-je extraire des lignes arbitraires d'une sortie cmd? Il est important de le faire avec une doublure. Pas de scripts!
Réponses:
Powershell.
PS C:\> netstat | Select -First 20
Edit: J'ai l'impression que vous allez insister sur le fait que vous ne pouvez utiliser cmd.exe que vers 1989, mais ce n'est pas vrai. Powershell est intégré à chaque version de système d'exploitation Vista + et peut être installé sur XP / 2003. Il est l'avenir de Windows.
Edit: Très bien, faites-le à votre façon.
Affiche les 10 premières lignes de la sortie de netstat.
la source
Si vous êtes une personne de type Unix, l'installation de CygWin vous donnera peut-être un environnement plus familier.
la source
Il existe une solution simple qui est beaucoup plus simple que d'utiliser la
for
boucle " ".Prenons la sortie de
dir/o-d
(ordredir
inverse par date) comme exemple.Par exemple, si vous voulez sortir les lignes 1 à 16, utilisez:
Par exemple, si vous voulez sortir les lignes 16 à 45, utilisez:
Exemple de sortie:
Panne:
findstr
l'expression régulière de fonctionne correctement. Votre problème est de vous échapper . (Voir la référence de Rob pour plus de détails.)Tout d'abord, videz la sortie entière en utilisant
dir/o-d
.Ensuite, ajoutez chaque ligne "
$Num:
" en utilisantfindstr/n ^^
^
signifie correspondre au début de la ligne, et^^
est tout simplement sa version d'échappement requise car nous sommes en cmd.Remarque: vous devez utiliser
findstr
pour cela carfind/n" "
ne correspondra pas aux lignes sans espaces`.Enfin, recadrez la sortie à l'aide de
findstr "^1[6-9]: ^[2-3][0-9]: ^4[0-5]:"
.^1[6-9]:
est regex pour 16 à 19.^[2-3][0-9]:
est regex pour 20 - 39.^4[0-5]:
est regex pour 40 à 45.findstr "a b c"
des moyens à trouver des chaînes qui correspondent soit des expressionsa
,b
ouc
.Voir également /programming//q/8844868/632951
la source
findstr
ne peut pas supprimer des éléments. Je pense que vous pourriez être obligé d'utiliser une boucle dans ce cas.Ceci est une commande en ligne, j'espère que cela fonctionne aussi pour vous.
la source