Ejecución de comandos Awk en PowerShell
 
awk es un lenguaje de secuencias de comandos para la manipulación de datos y la generación de informes. awk es un lenguaje de programación de línea de comandos que admite variables, funciones de texto, funciones numéricas y operadores lógicos sin compilar.
Desafortunadamente, awk no está completamente integrado en PowerShell ya que utiliza el sistema operativo Windows. Este artículo discutirá cómo podemos usar comandos y funciones similares a los comandos awk usando PowerShell.
Ejecutar comandos awk en PowerShell
La utilidad awk permite a los programadores crear programas breves pero potentes en forma de declaraciones que especifican patrones de texto, que pueden resultar extraños para los usuarios que no están familiarizados con los comandos de Linux o Linux en general. Estos patrones de texto se buscan en cada línea y se toman medidas cuando se encuentra una coincidencia.
awk se utiliza principalmente para escanear y procesar patrones. Explora uno o más archivos para ver si contienen líneas que coincidan con los patrones especificados y luego realiza las acciones asociadas.
El siguiente fragmento de código es un ejemplo de un comando que usa awk.
awk '/"Box11"/ { print $0 }' test.txt|awk '{ SUM += $4} END { print SUM} '
Para realizar operaciones similares como los comandos awk, usaríamos el comando Get-Content para obtener el contenido de un archivo y realizar un par de operaciones de cadena en Windows PowerShell. Si tomamos el ejemplo anterior, así es como se vería en PowerShell.
Código de ejemplo:
Get-Content c:\temp\test.txt |
Where-Object{$_ -match '"Box11"'} |
ForEach-Object{($_ -split "\s+")[3]} |
Measure-Object -Sum |
Select-Object -ExpandProperty Sum
- El comando Get-Contentobtendrá el contenido del archivo de texto.
- El comando Where-Objectfiltrará las líneas con la cadenaBox11.
- Luego, una vez filtrado, el script se repetirá para dividir cada cadena de línea en su cuarto elemento. Recuerda que PowerShell comienza en el índice 0; por lo tanto, usamos el índice3en lugar de4, a diferencia de nuestro comandoawk.
- El Measure-Objectrealizará un cálculo sobre el inmueble, siendo en este casoSum.
- Por último, el Select-Objectgenerará la propiedad expandidaSum.
Si nos damos cuenta, nuestra versión de PowerShell del comando awk es un poco más larga. Menos mal que en PowerShell podemos crear accesos directos usando alias y un par de operadores de PowerShell.
Código de ejemplo:
gc c:\temp\test.txt | ?{$_ -match '"Box11"'} | %{(-split $_)[3]} |
  Measure -Sum | Select -Exp Sum
Alternativamente, si tiene habilitado WSL (Subsistema de Windows para Linux), podemos ejecutar los comandos awk tal como están. Una función del sistema operativo Windows llamada Subsistema de Windows para Linux (WSL) le permite ejecutar un sistema de archivos de Linux, completo con herramientas de línea de comandos de Linux y aplicaciones GUI, directamente en Windows.
Entonces debemos llamar al comando wsl y ejecutar los comandos awk de forma nativa.
Código de ejemplo:
wsl -e awk '/"Box11"/{sum += $4} END{print sum}' test.txt
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn