Comando equivalente de cola de Unix en Windows Powershell
Tengo que mirar las últimas líneas de un archivo grande (el tamaño típico es de 500 MB a 2 GB). Estoy buscando un equivalente del comando Unix tail
para Windows Powershell. Algunas alternativas disponibles en son,
http://tailforwin32.sourceforge.net/
y
Obtener contenido [nombre de archivo] | Seleccionar-Objeto -Últimos 10
Para mí no está permitido utilizar la primera alternativa y la segunda alternativa es lenta. ¿Alguien conoce una implementación eficiente de tail para PowerShell?
Utilice el -wait
parámetro con Get-Content, que muestra líneas a medida que se agregan al archivo. Esta característica estaba presente en PowerShell v1, pero por alguna razón no está bien documentada en v2.
Aquí hay un ejemplo
Get-Content -Path "C:\scripts\test.txt" -Wait
Una vez que ejecute esto, actualice y guarde el archivo y verá los cambios en la consola.
Para completar, mencionaré que Powershell 3.0 ahora tiene un indicador -Tail en Get-Content
Get-Content ./log.log -Tail 10
obtiene las últimas 10 líneas del archivo
Get-Content ./log.log -Wait -Tail 10
obtiene las últimas 10 líneas del archivo y espera más
Además, para aquellos usuarios de *nix, tenga en cuenta que la mayoría de los sistemas tienen el alias cat de Get-Content, por lo que esto suele funcionar
cat ./log.log -Tail 10
A partir de la versión 3.0 de PowerShell, el cmdlet Get-Content tiene un parámetro -Tail que debería ayudar. Consulte la ayuda en línea de la biblioteca technet para Get-Content.
Utilicé algunas de las respuestas dadas aquí, pero solo un aviso que
Get-Content -Path Yourfile.log -Tail 30 -Wait
masticará la memoria después de un tiempo. Un colega dejó esa "cola" el último día y subió a 800 MB. No sé si la cola de Unix se comporta de la misma manera (pero lo dudo). Por lo tanto, está bien usarlo para aplicaciones a corto plazo, pero tenga cuidado.