¿Hay alguna forma de simular el comando * nix tail en la línea de comandos de Windows? Tengo un archivo y quiero una forma de cortar las primeras n líneas de texto. Por ejemplo:
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
fuente
fuente
head
muestra solo las primeras n líneas en lugar de omitirlas?head
comando de estilo Unix , pero parecía que faltaba el resultado deseadotail
. Parece que las respuestas son sobrehead
y notail
.tail
, sin embargo, el título decíahead
Respuestas:
Sin equivalente exacto. Sin embargo, existe un comando nativo de DOS "más" que tiene una opción + n que comenzará a generar el archivo después de la enésima línea:
Indicador de DOS:
El comando anterior generará todo después de las primeras 2 líneas.
Esta es en realidad la inversa de la cabeza de Unix :
Consola Unix:
El comando anterior imprimirá solo las 2 primeras líneas del archivo.
fuente
tail
comienza a contar desde el final del archivo. Entonces,tail -2
imprimirá las dos últimas líneas.-2
no es negativo. Es solo una versión abreviada de-n 2
(número de líneas). Desafortunadamente, demasiadas implementaciones detail
no son compatibles-2
, lo que lo hace muy inconsistente con lashead
implementaciones que lo acompañan . Me ha molestado demasiadas veces.head -n -2
cuál es diferente dehead -n 2
. Pero con cola, este último no existe.SI tiene Windows PowerShell instalado (creo que está incluido desde XP), puede ejecutar desde cmd.exe:
Comando principal:
Comando de cola:
o, directamente desde PowerShell:
actualizar
PowerShell 3.0 (Windows 8 y superior) agregó
Tail
comando con aliasLast
.Head
y también se agregaronFirst
alias aTotalCount
.Entonces, los comandos se pueden reescribir como
fuente
head
lugar detail
?Get-Content
tiene un comando de cola. Por ejemplo,Get-content -Tail 5 file.txt
imprimirá las últimas cinco líneas de file.txt. Gracias por actualizar tu respuesta por cierto.donde n = el número de filas para mostrar. Funciona rápido y es exactamente como un
head
comando.fuente
Puede obtener CoreUtils de GnuWin32 , que es una colección de herramientas estándar de Unix, portadas a Windows.
Entre otras cosas, contiene cabeza.
fuente
Este es un truco total, pero si es un archivo enorme que solo desea examinar el formato, el encabezado, etc. y está buscando una solución, siempre puede redirigir la salida 'más' a un nuevo archivo y CTRL-C con rapidez. Las filas de salida no se pueden controlar con precisión y lo más probable es que las elimine en medio de una línea de salida, pero es una forma barata de obtener una pequeña parte de un archivo que de otro modo no se podría utilizar.
Ex.
fuente
Bueno, esto lo hará , pero es tan rápido como parece (aproximadamente O (n * m), donde n es el número de líneas para mostrar ym es el número total de líneas en el archivo):
Donde "10" es el número de líneas que desea imprimir y "nombre de archivo" es el nombre del archivo.
fuente
head
.(expr) > out.txt
- cuando envíe los resultados a un archivo, o solo obtendrá la última línea. O agregar -expr >> out.txt
.Potencia Shell:
fuente
Cuando use más + n de lo que Matt ya mencionó, para evitar pausas en archivos largos, intente esto:
más +1 myfile.txt> con
Cuando redirige la salida de más, no se detiene, y aquí redirige a la consola. De manera similar, puede redirigir a otro archivo como este sin pausas de más si ese es el resultado final deseado. Use> para redirigir al archivo y sobrescribirlo si ya existe, o >> para agregarlo a un archivo existente. (Puede usar cualquiera para redirigir a estafa.)
fuente
también puede usar Git bash donde también se emula la cabeza y la cola
fuente
Get-content -Tail n file.txt
con powershell es lo único que se acercatail
en linux.Lo
Get-Content *filename* | Select-Object -last *n*
sugerido anteriormente carga / analiza todo. No hace falta decir que no estaba contento con mi archivo de registro de 10 GB ... La-Tail
opción comienza por el final del archivo.fuente
Si desea el comando head, una forma fácil de obtenerlo es instalar Cygwin. Entonces tendrás todas las herramientas de UNIX a tu disposición.
Si esa no es una buena solución, puede intentar usar Findstr y hacer una búsqueda del indicador de fin de línea.
Findstr en MSDN: http://technet.microsoft.com/en-us/library/bb490907.aspx
fuente
Aquí hay un comando principal nativo rápido que le brinda las primeras 9 líneas en DOS.
Los primeros 2 caracteres de cada línea serán el número de línea.
fuente
Hay un kit de recursos que se puede descargar desde aquí: http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displayLang=en
Contiene una herramienta tail.exe pero solo es compatible con algunas versiones de Windows
(Copiado de esta publicación: comando Tail para Windows )
fuente
en PS intenta usar el comando:
Este comando también se puede canalizar.
Ejemplo para obtener la primera línea:
o para obtener la primera línea:
fuente
FWIW, para aquellos que sólo necesitan recortar un número indeterminado de registros del encabezado del archivo, más> funciona bien. Esto es útil solo para tener un archivo más pequeño para trabajar en las primeras etapas del desarrollo de algo.
fuente
No intenté extraer un rango, pero pude obtener una línea usando el siguiente comando de DOS:
Dado que la mayoría de los archivos contienen espacios, este comando extrae cada línea de todos los archivos LOG y básicamente los numera a partir de 1 para cada archivo. Los resultados numerados luego se canalizan al segundo
FIND
comando que busca la línea etiquetada como número 6.fuente
Hay una
head
utilidad gratuita en esta página que puede utilizar. Aún no lo he probado.fuente
devolverá la primera línea de su archivo en cmd Windows en la variable% line%.
fuente
Como respuesta contemporánea, si ejecuta Windows 10, puede usar el "Subsistema de Linux para Windows".
https://docs.microsoft.com/en-us/windows/wsl/install-win10
Esto le permitirá ejecutar comandos nativos de Linux desde Windows y, por lo tanto, ejecutar Tail exactamente como lo haría en Linux.
fuente
No creo que haya forma de salir de la caja. No existe tal comando en DOS y los archivos por lotes están muy limitados para simularlo (sin mayores problemas).
fuente
Advertencia, el uso del archivo por lotes para, tokens y la capacidad delims en la entrada de texto desconocido puede ser un desastre debido a la interpretación especial de caracteres como &,!, <, Etc. Dichos métodos deben reservarse solo para texto predecible.
fuente