Necesito estos comandos para verificar el archivo de registro en Windows, pero no instalo ningún programa, y me gusta Powershell con Windows.¿Cómo hacer qué cabeza, cola, más, menos, sed hacer en Powershell?
Respuesta
Get-Content
(alias: gc
) es su opción habitual para leer un archivo de texto. A continuación, puede filtrar aún más:
gc log.txt | select -first 10 # head
gc -TotalCount 10 log.txt # also head
gc log.txt | select -last 10 # tail
gc -Tail 10 log.txt # also tail (since PSv3), also much faster than above option
gc log.txt | more # or less if you have it installed
gc log.txt | %{ $_ -replace '\d+', '($0)' } # sed
Esto funciona lo suficientemente bien como para archivos pequeños, más grandes (más de unos pocos MIB) son probablemente un poco lento.
El PowerShell Community Extensions incluye algunos cmdlets para archivos especializados (por ejemplo, Get-FileTail).
more.exe
existe en Windows, los puertos de less
son fáciles de encontrar (y el PowerShell Community Extensions, PSCX, incluye uno).
PowerShell en realidad no proporciona ninguna alternativa a los programas separados para ninguno, pero para los datos estructurados Out-Grid
puede ser útil.
Head
y Tail
pueden ambos ser emulado con Select-Object
utilizando los parámetros de -First
y -Last
respectivamente.
Sed
funciones están todas disponibles pero estructuradas de manera diferente. Las opciones de filtrado están disponibles en Where-Object
(o en Foreach-Object
y en algún estado para rangos). Otras operaciones de transformación pueden realizarse con Select-Object
y Foreach-Object
.
Sin embargo, como PowerShell pasa (.NET) objetos - con toda su estructura tipada, ej. las fechas siguen siendo DateTime
instancias, en lugar de solo cadenas, que cada comando necesita analizarse a sí mismo, gran parte de sed
y otros programas similares son redundantes.
Si necesita consultar archivos de registro grandes (o pequeños) en Windows, la mejor herramienta que he encontrado es Log Parser 2.2 libre de Microsoft. Puedes llamarlo desde PowerShell si lo deseas y hará todo el trabajo pesado por ti, y muy rápido también.
gracias de todos modos, mi entorno es Win2k8R2 que no está en los requisitos del sistema de Log Parser2.2 –
Tengo algunas soluciones mejores:
gc log.txt -ReadCount 5 | %{$_;throw "pipeline end!"} # head
gc log.txt | %{$num=0;}{$num++;"$num $_"} # cat -n
gc log.txt | %{$num=0;}{$num++; if($num -gt 2 -and $num -lt 7){"$num $_"}} # sed
Éstos son el incorporado en maneras de hacer head
y tail
. No use tuberías porque si tiene un archivo grande, será extremadamente lento. Usar estas opciones integradas será extremadamente rápido incluso para archivos grandes.
gc log.txt -head 10
gc log.txt -tail 10
gc log.txt -tail 10 -wait # equivalent to tail -f
pero [comentario de Joey] (https://stackoverflow.com/questions/9682024/how-to-do-what-head-tail- more-less-sed-do-in-powershell # comment60271566_9682594) parece indicar exactamente lo contrario. ¿Cómo sé en quién confiar o qué método (integrado) es más eficiente? –
@NH Mi respuesta está de acuerdo con el comentario de Joey. Su comentario dice: "Lo último es lento ... Es por eso que Get-Content -Tail existe". '| select -last' usa tubos. Estoy usando '-tail' sin tubos. Pero si alguna vez encuentras dos respuestas conflictivas, probablemente puedas confiar en la persona con una reputación mucho más alta. Además, puedes simplemente probar los dos métodos en un archivo grande. Será muy obvio en un archivo grande. – wisbucky
Entendido. Lo siento, debo haber estado confundido la primera vez que leí las publicaciones. –
- 1. ¿Cómo hacer que powershell sea menos detallado en los errores?
- 2. sed - cómo hacer grupos regex usando sed
- 3. ¿Qué puede hacer eso que sed no puede hacer?
- 4. ¿Cómo hacer que este script sed sea más rápido?
- 5. ¿Qué hacer con commit hecho en una cabeza separada
- 6. ¿Qué puedo hacer con C# y Powershell?
- 7. ¿Cómo hacer miembros readonly en powershell?
- 8. ¿Cómo hacer que el automake sea menos feo?
- 9. ¿Por qué usar dos pilas para hacer una cola?
- 10. Cómo hacer coincidir una comilla simple en sed
- 11. Debo hacer llamadas más frecuentes y más pequeñas; o llamadas más grandes menos frecuentes?
- 12. Hacer la operación menos en la cadena
- 13. ¿Qué significa el período '.' operador hacer en PowerShell?
- 14. ¿Equivalente al comando 'más' o 'menos' en Powershell?
- 15. ¿Cómo hacer esto más eficiente?
- 16. ¿Qué matplotlib `imshow (interpolación = 'más cercano')` hacer?
- 17. Cómo hacer git-pull en todas las carpetas menos una
- 18. ¿Cómo hacer TDD y pruebas unitarias en powershell?
- 19. ¿Cómo hacer una imagen almacenada? ¿Usa menos memoria RAM?
- 20. ¿HTML5 significa hacer menos con JavaScript?
- 21. ViewModel Qué hacer y qué no hacer
- 22. Cómo hacer que Integer.toBinaryString devuelva al menos 4 bits
- 23. ¿Cómo puedo hacer que este código python sea menos feo
- 24. ¿Cómo hacer una solicitud HTTP Post/GET en Powershell?
- 25. ¿Cómo hacer que los parámetros sean obligatorios en PowerShell?
- 26. ¿Cómo puedo hacer una captura de pantalla en Windows PowerShell?
- 27. Cómo hacer interfaz de consulta PowerShell en un objeto COM
- 28. ¿Cómo hacer una solicitud web autenticada en Powershell?
- 29. ¿Cómo hacer que doxygen funcione más rápido?
- 30. ¿Cómo puedo hacer que mi mostrador parezca menos falso?
archivo de registro es demasiado grande, con varios MBytes. Es muy difícil de ver por notepad.exe. –
Si está utilizando 'notepad' como su base, le sugiero que busque en los editores de texto alternativos, hay muchas alternativas (tanto gratuitas como de pago). Todos son superiores al bloc de notas (aunque eso no es un gran desafío). – Richard
posible duplicado de [PowerShell vs. Unix Shells] (http://stackoverflow.com/questions/573623/powershell-vs-unix-shells) – manojlds