Necesito un equivalente del head
comando Unix (mostrar las primeras N líneas de la salida). Esto es lo que estoy usando actualmente:
tasklist | find /N " " | findstr /r \[[0-9]\]
El código anterior muestra las primeras 10 líneas de tasklist
salida. find /N " "
antepone un número de línea al comienzo de cada línea mientras findstr /r \[[0-9]\]
extrae las primeras 10 líneas usando expresiones regulares.
El código anterior funciona, pero necesito especificar cualquier rango . Debido al hecho de que las expresiones regulares no se implementan de acuerdo con los estándares de Windows, no puedo hacer que nada más funcione.
¿Cómo puedo extraer líneas arbitrarias de una salida de cmd? Es importante hacer esto con una sola línea. No hay guiones!
Respuestas:
Potencia Shell.
PS C:\> netstat | Select -First 20
Editar: Tengo la sensación de que insistirá en que solo puede usar cmd.exe alrededor de 1989, pero eso no es cierto. Powershell está integrado en cada versión del sistema operativo Vista +, y es instalable en XP / 2003. Que es el futuro de Ventanas.
Editar: Muy bien, hazlo a tu manera.
Mostrará las primeras 10 líneas de la salida de netstat.
fuente
Si usted es una persona de tipo Unix, quizás instalar CygWin le brinde un entorno más familiar.
fuente
Hay una solución fácil que es mucho más fácil que usar el
for
bucle " ".Tomemos la salida de
dir/o-d
(ordendir
inverso por fecha) como ejemplo.Por ejemplo, si desea generar líneas 1 a 16, use:
Por ejemplo, si desea generar líneas 16 a 45, use:
Salida de muestra:
Descompostura:
findstr
la expresión regular de 'realmente funciona correctamente. Tu problema es escapar . (Consulte la referencia de Rob para más detalles).Primero, volcar toda la salida usando
dir/o-d
.Luego, anteponga cada línea con "
$Num:
" usandofindstr/n ^^
^
significa inicio de línea de coincidencia, y^^
es simplemente que se requiere una versión con escape porque estamos en cmd.Nota: debe usar
findstr
esto porquefind/n" "
no coincidirá con líneas sin espacios '.Por último, recorte la salida usando
findstr "^1[6-9]: ^[2-3][0-9]: ^4[0-5]:"
.^1[6-9]:
es regex de 16 a 19.^[2-3][0-9]:
es regex para 20-39.^4[0-5]:
es regex de 40 a 45.findstr "a b c"
medios encontrar cadenas que concuerden con cualquiera de las expresionesa
,b
, oc
.Consulte también /programming//q/8844868/632951
fuente
findstr
no puede eliminar cosas. Creo que podría verse obligado a usar un bucle en ese caso.Este es un comando de una línea, espero que funcione para usted también.
fuente