Solución:
Get-Content
(alias: gc
) es su opción habitual para leer un archivo de texto. Luego puede filtrar 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 bastante bien para archivos pequeños, los más grandes (más de unos pocos MiB) probablemente sean un poco lentos.
Las extensiones de la comunidad de PowerShell incluyen algunos cmdlets para archivos especializados (por ejemplo, Get-FileTail).
Aquí están las formas integradas de hacer head
y tail
. 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 de gran tamaño.
gc log.txt -head 10
gc log.txt -tail 10
gc log.txt -tail 10 -wait # equivalent to tail -f
more.exe
existe en Windows, puertos de less
se encuentran fácilmente (y las extensiones de la comunidad de PowerShell, PSCX, incluyen una).
PowerShell realmente no proporciona ninguna alternativa a programas separados para ninguno de los dos, sino para datos estructurados Out-Grid
puede ser útil.
Head
y Tail
ambos se pueden emular con Select-Object
utilizando el -First
y -Last
parámetros respectivamente.
Sed
todas las funciones están disponibles pero estructuradas de manera bastante diferente. Las opciones de filtrado están disponibles en Where-Object
(o vía Foreach-Object
y algunos estados para rangos). Otras operaciones de transformación se pueden realizar con Select-Object
y Foreach-Object
.
Sin embargo, a medida que PowerShell pasa objetos (.NET), con toda su estructura escrita, por ejemplo. quedan las fechas DateTime
instancias, en lugar de solo cadenas, que cada comando necesita analizarse, gran parte de sed
y otros programas similares son redundantes.