PowerShell eliminar encabezado de salida [5 formas]
Para este artículo, usaremos un archivo CSV; usted puede usar el suyo propio, pero usaremos
inputFile.csvque contiene los siguientes datos:Contenido del archivo inputFile.csv:
FirstName,LastName,Department Shruti,Mehta,Computer Science Mehvish,Ashiq,Mathematics John,Christopher,Psychology Saira,Daniel,Humanities Gurmeet,Kaur,Arts
Eliminar el encabezado de los datos importados
Podemos utilizar varias formas de eliminar el encabezado de los datos importados antes de procesarlos en PowerShell. Aprendamoslos a continuación.
Utilice el parámetro -HideTableHeaders
Utilice el parámetro -HideTableHeaders para eliminar el encabezado de los datos importados en PowerShell.
Utilice el parámetro -HideTableHeaders:
$inputData = Import-Csv -Path "E:/Test/inputFile.csv"
$dataWithoutHeader = $inputData | Format-Table -HideTableHeaders
echo "Data with Header:", $inputData
echo "`nData without Header:", $dataWithoutHeaderPRODUCCIÓN :
Data with Header:
FirstName LastName Department
--------- -------- ----------
Shruti Mehta Computer Science
Mehvish Ashiq Mathematics
John Christopher Psychology
Saira Daniel Humanities
Gurmeet Kaur Arts
Data without Header:
Shruti Mehta Computer Science
Mehvish Ashiq Mathematics
John Christopher Psychology
Saira Daniel Humanities
Gurmeet Kaur ArtsUsamos el cmdlet Import-Csv para importar el contenido del archivo CSV dado (inputFile.csv) que especificamos usando el parámetro -Path. El cmdlet Import-Csv creó los objetos personalizados en forma de tabla y los elementos en las filas se convirtieron en los valores de propiedad.
Este cmdlet funcionará en cualquier archivo CSV, incluidos los generados mediante el cmdlet Export-Csv. Recuerde que podemos omitir el parámetro -Path y especificar la ruta del archivo sin usar este nombre de parámetro.
Almacenamos los datos leídos en la variable $inputData, que se canalizó al cmdlet Format-Table para formatear la salida como una tabla. Usamos este cmdlet con el parámetro -HideTableHeader para ocultar el encabezado de la tabla de salida y lo almacenamos en la variable $dataWithoutHeader. Por último, utilizamos el comando echo para mostrar los datos con/sin encabezado.
Tenga en cuenta que el parámetro -HideTableHeaders del cmdlet Format-Table no elimina ni elimina el encabezado, sino que solo oculta la visualización del encabezado en la consola de salida. Es por eso que tienes suficiente espacio entre la cadena Datos sin encabezado: y la tabla de salida sin encabezado; vea el resultado anterior.
Si no desea espacio en lugar del encabezado, puede usar Out-String cmd con el método trim().
Utilice el parámetro -HideTableHeaders:
$inputData = Import-Csv -Path "E:/Test/inputFile.csv"
$dataWithoutHeader = ($inputData | Format-Table -HideTableHeaders| Out-String).trim()
echo "Data without Header:", $dataWithoutHeaderUn punto digno de mención es que el cmdlet Format-Table se usa principalmente para formatear datos en la consola de salida; No se recomienda usarlo si desea exportar los datos de salida a un archivo CSV. Del mismo modo, no importa si está utilizando los cmdlets Export-Csv o Set-Content. ¿Por qué?
El motivo es que si utiliza Format-Table y exporta los datos de salida a un archivo CSV, puede obtener datos distorsionados o inesperados porque el cmdlet Format-Table generó texto formateado. en lugar de datos estructurados, que es más adecuado para un formato CSV.
¿Cómo exportar datos a un archivo CSV? Para exportar los datos de salida, debe evitar el cmdlet Format-Table y trabajar en los datos estructurados para tener los datos de salida deseados para una exportación CSV. ¿Cómo? Lo aprenderemos en la próxima sección.
Generalmente, el cmdlet
Format-Tabledebe ser el último en una canalización y solo se recomienda si no desea exportar los resultados en un archivo CSV.
Utilice el cmdlet Select-Object con el parámetro -ExpandProperty
Utilice el cmdlet Select-Object con el parámetro -ExpandProperty para obtener valores de una propiedad sin su encabezado a partir de los datos importados en PowerShell.
Utilice el cmdlet Seleccionar con el parámetro -ExpandProperty:
Import-Csv "E:/Test/inputFile.csv" | Select-Object -ExpandProperty FirstNamePRODUCCIÓN :
Shruti
Mehvish
John
Saira
GurmeetHemos aprendido sobre Import-Csv y Select-Object anteriormente. Aquí, usamos el parámetro -ExpandProperty para especificar el nombre de la propiedad para la cual queremos capturar los valores.
Hasta ahora, usábamos el cmdlet Select-Object para obtener valores de una o todas las propiedades sin encabezado. ¿Qué pasaría si nos dieran instrucciones estrictas de tomar los valores de las propiedades n y mostrarlos en la consola de PowerShell? Consulte el siguiente script para aprender cómo hacerlo.
Utilice el cmdlet Select-Object con el parámetro -Skip
Utilice el cmdlet Select con el parámetro -Skip para eliminar el encabezado de los datos importados en PowerShell y obtener valores para todas las propiedades.
Utilice el cmdlet Seleccionar objeto con el parámetro -Omitir:
$inputData = Import-Csv -Path "E:/Test/inputFile.csv"
$inputData |
ConvertTo-Csv -NoTypeInformation |
ForEach{ $_ -replace '"' ,''} |
Select-Object -Skip 1 |
Set-Content "E:/Test/outputFile.csv"
echo "Data with Header:", $inputData
$outputData = Get-Content "E:/Test/outputFile.csv"
echo "`nData without Header:", $outputDataPRODUCCIÓN :
Data with Header:
FirstName LastName Department
--------- -------- ----------
Shruti Mehta Computer Science
Mehvish Ashiq Mathematics
John Christopher Psychology
Saira Daniel Humanities
Gurmeet Kaur Arts
Data without Header:
Shruti,Mehta,Computer Science
Mehvish,Ashiq,Mathematics
John,Christopher,Psychology
Saira,Daniel,Humanities
Gurmeet,Kaur,Arts
Nuevamente, usamos el cmdlet Import-Csv para importar datos del archivo CSV que especificamos usando el parámetro -Path; Almacenamos los datos importados en la variable $inputData, que se reenvió a una declaración de múltiples canalizaciones.
En esta declaración de canalización múltiple, utilizamos el cmdlet ConvertTo-Csv para convertir los objetos .NET en una serie de cadenas CSV. Como no queríamos la información de tipo, utilizamos el parámetro -NoTypeInformation para eliminar el encabezado de información #TYPE de la salida. Esta salida se canalizó además a la declaración ForEach.
El cmdlet
ConvertTo-Csvse utiliza cuando no es necesario exportar a un archivo debido a algunas operaciones pendientes. Y-NoTypeInformationes el parámetro predeterminado desde PowerShell 6.0.
La instrucción ForEach se repitió sobre la matriz de objetos producida por el cmdlet ConvertTo-Csv y reemplazó las comillas dobles (") con una cadena vacía ( '') usando el operador -replace Aquí, $_ representaba el elemento actual.
Luego, usamos el cmdlet Select-Object con el parámetro -Skip cuyo valor se estableció en 1 (es el valor inicial para este parámetro ). Seleccionó todos los datos omitiendo el encabezado y los canalizó al cmdlet Set-Content, que escribió el archivo outputFile.csv.
Usamos el cmdlet Get-Content para recuperar el contenido del archivo outputFile.csv y el comando echo para imprimir los datos con/sin encabezado en la consola de PowerShell.
Si no desea utilizar el cmdlet ConvertTo-Csv, debe utilizar el cmdlet Get-Content para leer el contenido de inputFile.csv. archivo . De lo contrario, su outputFile.csv contendría el contenido en @{FirstName=Mehvish; Apellido=Ashiq; Departamento=Matemáticas} formato.
Utilice el cmdlet Seleccionar objeto con el parámetro -Omitir:
$inputData = Get-Content "E:/Test/inputFile.csv"
$inputData |
Select-Object -Skip 1 |
Set-Content "E:/Test/outputFile.csv"
echo "Data with Header:", $inputData
$outputData = Get-Content "E:/Test/outputFile.csv"
echo "`nData without Header:", $outputDataPRODUCCIÓN :
Data with Header:
FirstName,LastName,Department
Shruti,Mehta,Computer Science
Mehvish,Ashiq,Mathematics
John,Christopher,Psychology
Saira,Daniel,Humanities
Gurmeet,Kaur,Arts
Data without Header:
Shruti,Mehta,Computer Science
Mehvish,Ashiq,Mathematics
John,Christopher,Psychology
Saira,Daniel,Humanities
Gurmeet,Kaur,ArtsSi desea reemplazar el contenido del archivo principal (inputFile.csv), puede utilizar el siguiente comando compacto:
Utilice el cmdlet Seleccionar objeto con el parámetro -Omitir:
(Get-Content E:/Test/inputFile.csv)|
Select-Object -Skip 1|
Set-Content "E:/Test/inputFile.csv"SALIDA: Contenido de inputFile.csv:
Shruti,Mehta,Computer Science
Mehvish,Ashiq,Mathematics
John,Christopher,Psychology
Saira,Daniel,Humanities
Gurmeet,Kaur,ArtsPara este enfoque en particular, no olvide utilizar () para incluir el cmdlet Get-Content para que pueda leer el inputFile.csv completo. primero en la memoria, lo cual es obligatorio si se supone que debe guardarlo nuevamente en el archivo exacto como parte del mismo comando.
Utilice Select-Object con el cmdlet ForEach-Object
Utilice el cmdlet Select-Object con el cmdlet ForEach-Object para eliminar el encabezado de las propiedades n de los datos importados.
Utilice Seleccionar objeto con el cmdlet ForEach-Object:
Import-Csv "E:/Test/inputFile.csv" |
Select-Object FirstName, LastName |
ForEach-Object {$_.FirstName + "," + $_.LastName}PRODUCCIÓN :
Shruti,Mehta
Mehvish,Ashiq
John,Christopher
Saira,Daniel
Gurmeet,KaurYa hemos aprendido sobre los cmdlets Import-Csv, Select-Object y ForEach-Object. Es preferible este enfoque para seleccionar el número n de propiedades donde n es mayor que 1 y menor que el número total de registros en el CSV dado. archivo.
Alternativamente, podemos usar el operador -f de la siguiente manera:
Utilice el operador -f:
Import-Csv "E:/Test/inputFile.csv" |
%{ "{0},{1}" -f $_.FirstName,$_.LastName }PRODUCCIÓN :
Shruti,Mehta
Mehvish,Ashiq
John,Christopher
Saira,Daniel
Gurmeet,KaurImportamos contenido del archivo CSV especificado usando el cmdlet Import-Csv, que luego se canalizó al comando ForEach-Object para procesar cada objeto. % es un alias del cmdlet ForEach-Object.
Dentro del bloque de script ForEach-Object, utilizamos el operador de formato de cadena -f para formatear la salida. Aquí, la cadena de formato "{0},{1}" definió el patrón de formato, especificando dos marcadores de posición {0} y {1}. para el nombre y apellido.
El $_ representaba el objeto actual que se está procesando en la canalización; aquí, se accedió a las propiedades FirstName y LastName usando notación de puntos como $_.FirstName y $_.LastName .
Hasta ahora, hemos aprendido cómo importar datos de un archivo CSV y eliminar el encabezado antes de continuar con el procesamiento. ¿Qué sucede si desea eliminar el encabezado de la salida de un comando de PowerShell?
Eliminación del encabezado de la salida del comando PS
Tenemos múltiples enfoques para eliminar un encabezado de la salida producida por los comandos de PowerShell. Podemos utilizar cualquiera de ellos en función de las necesidades de nuestro proyecto. Aprendamos algunos de ellos a continuación.
Utilice el parámetro -HideTableHeaders para eliminar un encabezado de los datos importados en PowerShell.
Utilice el parámetro -HideTableHeaders:
Get-Alias | Format-Table -HideTableHeadersPRODUCCIÓN :
Alias % -> ForEach-Object
Alias ? -> Where-Object
Alias ac -> Add-Content
Alias asnp -> Add-PSSnapin
Alias cat -> Get-Content
Alias cd -> Set-Location
Alias CFS -> ConvertFrom-String 3.1.0.0 Microsoft.PowerShell.Utility
... ... ... ...
... ... ... ...
... ... ... ...Utilice el cmdlet Select con el parámetro -ExpandProperty para obtener valores de una propiedad sin su encabezado en PowerShell.
Utilice el cmdlet Seleccionar con el parámetro -ExpandProperty:
Get-Alias | Select -ExpandProperty NamePRODUCCIÓN :
%
?
ac
asnp
cat
cd
CFS
chdir
...
...
...Recuerde, Select es un alias de Select-Object, lo que significa que puede usarlos alternativamente.
Utilice el bucle ForEach para obtener valores de una propiedad sin su encabezado en PowerShell.
Utilice para cada bucle:
Get-Alias | ForEach {$_.Name}PRODUCCIÓN :
%
?
ac
asnp
cat
cd
CFS
chdir
...
...
...Utilice el operador -f para obtener valores de varias propiedades sin su encabezado en PowerShell.
Utilice el operador -f:
Get-Alias | %{ "{0},{1}" -f $_.CommandType,$_.Definition }PRODUCCIÓN :
Alias,ForEach-Object
Alias,Where-Object
Alias,Add-Content
Alias,Add-PSSnapIn
Alias,Get-Content
Alias,Set-Location
Alias,ConvertFrom-String
Alias,Set-Location
Alias,Clear-Content
... , ...
... , ...
... , ...Hemos aprendido estos cmdlets y operadores mientras eliminamos el encabezado de los datos importados.
Se trata de que Powershell elimine el encabezado de la salida.
