En las ventanas, uso de PowerShell, ¿cuáles son los comandos equivalentes a Linux head, tail, more, lessy sed?
windows
powershell
Yue Zhang
fuente
fuente

notepadcomo base, le sugiero que busque editores de texto alternativos, hay muchas alternativas (gratuitas y de pago). Todos son superiores al bloc de notas (aunque eso no es un gran desafío).Respuestas:
Get-Content(alias:)gces su opción habitual para leer un archivo de texto. A continuación, puede filtrar más:Esto funciona bastante bien para archivos pequeños, los más grandes (más de unos pocos MiB) son probablemente un poco lentos.
Las extensiones de la comunidad de PowerShell incluyen algunos cmdlets para archivos especializados (por ejemplo, Get-FileTail).
fuente
-last 2CSV de 1GB. Bebida caliente: ☕Get-Content -Tail 2en su lugar. Definitivamente es más rápido.gc log.txt | %{ $_ -replace '\d+', '($0)' } # sedque en realidad no es completamente la herramienta sed, ya que no devuelve el contenido. Necesita Set-Content.-Lastes lento por la misma razónawkque sería lento para la misma tarea: primero tiene que consumir el flujo por completo. Por esoGet-Content -Tailexiste. Y no hayheadporque no encaja en las convenciones de nomenclatura, y su propósito ya está cumplidoSelect-Item.-head. Vea mi respuesta stackoverflow.com/a/41626586/1081043Aquí están las formas integradas de hacer
headytail. No use tuberías porque si tiene un archivo grande, será extremadamente lento. El uso de estas opciones integradas será extremadamente rápido incluso para archivos grandes.fuente
| select -lastutiliza tuberías. Estoy usando-tailsin tuberías. Pero si alguna vez encuentra dos respuestas contradictorias, probablemente podría confiar en la persona con una reputación mucho más alta. Además, puede simplemente probar los dos métodos en un archivo grande. Será muy obvio en un archivo grande.more.exeexiste en Windows, los puertos delessse encuentran fácilmente (y las Extensiones de la comunidad de PowerShell , PSCX, incluyen una).PowerShell realmente no ofrece ninguna alternativa a los programas separados para ninguno de los dos, pero para los datos estructurados
Out-Gridpuede ser útil.HeadyTailambos pueden emularseSelect-Objectusando los parámetros-Firsty-Lastrespectivamente.Sedtodas las funciones están disponibles pero estructuradas de manera bastante diferente. Las opciones de filtrado están disponibles enWhere-Object(o víaForeach-Objecty algún estado para rangos). Se pueden realizar otras operaciones de transformación conSelect-ObjectyForeach-Object.Sin embargo, a medida que PowerShell pasa objetos (.NET), con toda su estructura escrita, por ejemplo. las fechas siguen siendo
DateTimeinstancias, en lugar de solo cadenas, que cada comando necesita analizar por sí mismo, muchos desedestos programas y otros son redundantes.fuente
"-TotalCount" en este caso responde exactamente como "-head". Tienes que usar -TotalCount o -head para ejecutar el comando de esa manera. Pero -TotalCount es engañoso - no funciona REALMENTE dándote NINGÚN recuento ...
El script anterior, probado en PS 5.1 es la MISMA respuesta que a continuación ...
¡Entonces solo usa '-head 25 "ya!
fuente
Si necesita consultar archivos de registro grandes (o pequeños) en Windows, la mejor herramienta que he encontrado es Log Parser 2.2 gratuito de Microsoft . Puede llamarlo desde PowerShell si lo desea y hará todo el trabajo pesado por usted, y muy rápido también.
fuente
Tengo algunas mejores soluciones:
fuente
No obtienes todos los errores con el código pushpop Por cierto, tu código solo funciona con la opción "sed". Todo el resto ignora todo menos gc y path.
fuente