Comment sélectionner les 10 premières colonnes d'un entete du fichier csv à l'aide de PowerShell?

J'ai un fichier CSV appelé test.csv ($testCSV).
Il y a beaucoup de colonnes dans ce fichier, mais je tiens simplement à sélectionner les 10 premières colonnes et de mettre ces 10 colonnes dans un autre fichier CSV.
Veuillez noter que je N'AI PAS TOUTES les en-TÊTES de COLONNE ne peut donc pas sélectionner les colonnes basé sur un nom de colonne.

Les dessous de la ligne de code obtenir les 10 premières LIGNES du fichier:

$first10Rows = Get-Content $testCSV | select -First 10

Cependant j'ai besoin de toutes les données pour les 10 premières COLONNES et j'ai du mal à trouver une solution.

J'ai aussi eu un coup d'oeil à scinder le fichier, et la tentative de retour de la première colonne comme suit:

$split = ( Get-Content $testCSV) -split ','
$FirstColumn = $split[0]

J'avais espéré l' $split[0] serait de retour l'ensemble de la première colonne, mais il ne renvoie que le premier champ dans le fichier.

Toute aide dans la résolution de ce problème est très apprécié.

Merci d'avance.

****** Mise à JOUR******

Je suis en utilisant la méthode de réponse ci-dessous par vonPryz pour résoudre ce problème, à savoir:

Import-Csv -Delimiter "," -Header @("a","b","c") -Path $testCSV  | Select a,b

Cependant, je suis également en essayant d'importer le fichier CSV seulement où la colonne b n'est pas nulle en ajoutant ce petit supplément de code:

Import-Csv -Delimiter "," -Header @("a","b","c") -Path $testCSV  | Select a,b | where b -notmatch $null

J'ai besoin de le faire pour accélérer le script comme il y a des dizaines de milliers de lignes où la colonne b est nul et je n'ai pas besoin pour l'importation de ces lignes.
Toutefois, le code ci-dessus ne renvoie pas de données, soit en ce sens le code doit être tort, ou qu'il pense que le champ b n'est pas nul. Un exemple de 2 lignes du fichier texte est:

1,2,3

x,,z

Et je veux seulement les ligne(s) où la deuxième colonne est occupé.

J'espère que je vous ai expliqué que bien et encore une fois, toute aide est appréciée.

*******************RÉPONSE********************

Import-Csv -Delimiter "," -Header @("a","b","c") -Path $testCSV | Select a,b | Where-Object { $_.b -ne '' }

Merci!

  • Re: mise à jour. Import-Csv traite consécutives délimiteurs comme une chaîne vide, pas $null. Une chaîne vide, '', n'est pas égal à $null plus que 0 est. Vous souhaitez utiliser Where-Object { b -ne '' } ou Where-Object { b.Trim() -ne '' }
  • Merci pour la réponse. J'ai eu un "CommandNotFoundException" erreur avec ce code tant qu'il ne reconnaît pas les "b". Cependant, elle n'a directement me conduire à la réponse......:: Where-Object { $_.b -ne '' }
  • Oh, eh bien non. C'est ce que je reçois pour répondre à des questions avant de le café!
  • Je prends pleinement de crédit! :p
InformationsquelleAutor Johnathan | 2015-04-22