Combiner des fichiers CSV en PowerShell
-
Le format
CSV
-
Filtrer les fichiers
.csv
dans PowerShell -
Récupérer chaque objet de fichier
.csv
dans PowerShell - Fusionner le contenu des fichiers CSV dans PowerShell
- Écrire le contenu fusionné dans un fichier texte dans PowerShell
Il peut être nécessaire de fusionner plusieurs fichiers CSV et d’écrire les données dans un fichier texte dans PowerShell. Les cmdlets Import-Csv
et Export-Csv
peuvent être utilisées pour effectuer cette opération.
Le format CSV
Il existe différents types de formats de fichiers disponibles à des fins différentes. Le CSV
utilise une structure simple pour stocker les données.
Il peut être utilisé pour échanger des données entre différents programmes. Comme son nom CSV
(comma-separated values) l’indique, les données sont séparées par des virgules.
Les informations stockées dans un fichier CSV
ressemblent à ce qui suit.
UserName,Identifier,First Name,Last Name
jak12,1001,Harry,Smith
Rock90,1002,Jeremy,Hamilton
Rick23,1003,Rakesh,Donas
User01,1004,Lokie,Ferguson
Le délimiteur peut être un espace, un point-virgule ou tout autre caractère.
Créons deux fichiers csv
que nous fusionnerons à l’aide de PowerShell.
Contenu de username.csv
:
Contenu de username2.csv
:
Filtrer les fichiers .csv
dans PowerShell
Il est recommandé d’utiliser l’applet de commande Get-ChildItem
pour récupérer tous les types de fichiers .csv
à l’emplacement spécifié. Le paramètre -Filter
peut être passé pour filtrer les fichiers avec l’extension .csv
.
Le chemin du dossier vers les fichiers .csv
peut être différent dans votre cas.
$csvFilePath = "D:\csvfiles"
$csvFileList = Get-ChildItem $csvFilePath -Filter *.csv
Vérifions le contenu disponible dans la $csvFileList
.
$csvFileList
Production:
Récupérer chaque objet de fichier .csv
dans PowerShell
Récupérons chaque objet fichier avec son nom complet. L’applet de commande Select-Object
peut être utilisée pour récupérer chaque objet avec ses propriétés développées.
Nous dirigeons la sortie de l’étape précédente vers la commande Select-Object
.
$csfFilesToImport = $csvFileList | Select-Object -ExpandProperty FullName
Lorsque vous affichez la variable $csfFilesToImport
, on constate que les deux objets fichier CSV
sont disponibles avec le nom complet.
$csfFilesToImport
Production:
Fusionner le contenu des fichiers CSV dans PowerShell
Puisque nous avons tous les fichiers CSV
, importons le contenu de chaque fichier. Cela fusionnerait facilement le contenu avec une ligne d’en-tête commune.
Nous pouvons utiliser le Import-CSV
pour construire des objets de type table à partir du contenu du fichier CSV
canalisé.
$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles
Production:
Les informations ont été fusionnées à partir des deux fichiers CSV
fournis.
Écrire le contenu fusionné dans un fichier texte dans PowerShell
Nous pouvons transformer les objets ci-dessus en chaînes CSV
et les enregistrer dans un fichier texte. L’applet de commande Export-Csv
est disponible.
Nous devons utiliser le paramètre Append
pour nous assurer que le contenu n’est pas remplacé et ajouté.
$importedCsvFiles | Export-Csv D:\merged.txt -NoTypeInformation -Append
Production:
Cela devrait créer un nouveau fichier texte appelé merged.txt
. Ce contenu de fichier serait fusionné à partir des deux fichiers CSV
ci-dessus.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.