Cómo aplicar los comandos cut y sed en Powershell?
Tengo un script de bash que recupera datos de 2 archivos separados (uno para los datos de usuario y otro para el texto predeterminado) y muestra una carta circular:
if [ $# -eq 0 ]
then
echo "Por favor ingrese dos parámetros"
exit
elif [ $# -eq 1 ]
then
echo "Por favor ingrese un parámetro adicional"
exit
elif [ $# -gt 2 ]
then
echo "Por favor ingrese SOLO dos parámetros"
exit
fi
while read line
do
iN=`echo $line | cut -f1 -d";"`
iA=`echo $line | cut -f2 -d";"`
iD=`echo $line | cut -f3 -d";"`
cat $2|sed "s/<name>/$iN/g" | sed "s/<address>/iA/g" | sed "s/<date>/$iD/g"
done < data
Se necesita convertir a un script de PowerShell (PS), esto es lo que he podido hacer hasta ahora:
if ($# -eq 0) {
Write-Output "Por favor ingrese dos parámetros"
} elseif ($# -eq 1 ) {
Write-Output "Por favor ingrese un parámetro adicional"
} elseif ($# -gt 2) {
Write-Output "Por favor ingrese SOLO dos parámetros"
}
foreach($line in Get-Content .\data.txt) {
}
No pude encontrar ningún equivalente de los comandos “sed” o “cut” en Internet, así que agradecería cualquier tipo de ayuda.
davy.ai
Como lenguaje, PowerShell contiene un conjunto de comandos diferente en comparación con Bash, por lo que deberás usar métodos diferentes para lograr el mismo resultado.
Por ejemplo, en lugar de
sed
, puedes usar el operador-replace
para llevar a cabo tareas similares en PowerShell. De manera similar, puedes utilizar el cmdletSelect-Object
para lograr efectos similares acut
.Aquí tienes un ejemplo de cómo convertir el script de Bash a un script de PowerShell:
En este script de PowerShell, los parámetros se pasan a través de la variable
$args
, la cual contiene una matriz con todos los argumentos pasados al script. El cmdletGet-Content
se utiliza para leer el archivo de datos, y el cmdletForEach-Object
se utiliza para recorrer cada línea del archivo de datos.El operador
-split
se utiliza para dividir cada línea en tres variables,$iN
,$iA
y$iD
. Nuevamente, se utiliza el cmdletGet-Content
para leer el archivo de plantilla de la carta, y el cmdletForEach-Object
se utiliza para reemplazar los marcadores de posición en la plantilla de la carta con los valores reales del archivo de datos utilizando el operador-replace
.Finalmente, el contenido modificado se muestra en la consola utilizando el comando
Write-Output
.Esto debería darte una idea aproximada de cómo convertir tu script de Bash a un script de PowerShell. Ten en cuenta que es posible que se requieran algunas modificaciones dependiendo de los requisitos específicos de tu script.