Question
Fichier CSV
- cfg
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 1
- Remerciements reçus 0
il y a 13 ans 3 mois #13213
par cfg
Fichier CSV a été créé par cfg
Bonjour
Je debute en powershell et afin de faire une comparaison de fichier, j'ai besoin de renomer un en-tete d'un fichier csv.
J'ai un extract venant d'un OpenLdap et il faut que je renomme l'en-tete \"uid\" en \"sAMAccountName\".
Si quelqu'un a une idée je suis preneur
Je debute en powershell et afin de faire une comparaison de fichier, j'ai besoin de renomer un en-tete d'un fichier csv.
J'ai un extract venant d'un OpenLdap et il faut que je renomme l'en-tete \"uid\" en \"sAMAccountName\".
Si quelqu'un a une idée je suis preneur
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
-
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 13 ans 2 mois #13440
par Gabriel
Réponse de Gabriel sur le sujet Re:Fichier CSV
Salut
supposons que la premiere ligne du fichier venant de ldap contienne ça
[code:1]
\"dn\",\"uid\",\"name\",\"autres champs...\"
[/code:1]
on peut faire ça
[code:1]
\"dn\",\"sAmAccountName\",\"name\",\"autres champs...\" | out-file c:\temp\nouveaufichier.csv -Force
Get-Content C:\temp\ancienFichier.csv | select -Skip 1 | out-file c:\temp\nouveaufichier.csv -Append
[/code:1]
grosso modo tu créé un nouveau fichier avec l'entete qui va bien, mais il faut conserver l'ordre des champs
Ensuite tu copies les données de l'ancien fichier en ignorant la premiere ligne de l'ancien fichier.
bon la technique est un peu brutale, puisqu'il n'ya pas de controle des champs, ça suppose que l'ordre des colonnes ne change pas.<br><br>Message édité par: tonic8, à: 24/12/12 16:41
supposons que la premiere ligne du fichier venant de ldap contienne ça
[code:1]
\"dn\",\"uid\",\"name\",\"autres champs...\"
[/code:1]
on peut faire ça
[code:1]
\"dn\",\"sAmAccountName\",\"name\",\"autres champs...\" | out-file c:\temp\nouveaufichier.csv -Force
Get-Content C:\temp\ancienFichier.csv | select -Skip 1 | out-file c:\temp\nouveaufichier.csv -Append
[/code:1]
grosso modo tu créé un nouveau fichier avec l'entete qui va bien, mais il faut conserver l'ordre des champs
Ensuite tu copies les données de l'ancien fichier en ignorant la premiere ligne de l'ancien fichier.
bon la technique est un peu brutale, puisqu'il n'ya pas de controle des champs, ça suppose que l'ordre des colonnes ne change pas.<br><br>Message édité par: tonic8, à: 24/12/12 16:41
Connexion ou Créer un compte pour participer à la conversation.
- darphboubou
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 135
- Remerciements reçus 0
il y a 13 ans 2 mois #13442
par darphboubou
Réponse de darphboubou sur le sujet Re:Fichier CSV
En supposant que j'ai bien compris ta problematique
tu as obtenu un fichier CSV suite a une extract open ldap
Avec en en tête une colonne nommée UID
donc si tu veux juste remplacer UID par SamaccountName
Il suffit de faire
[code:1]
$content= Get-Content \"monfichier.csv\" | Foreach {$_-replace \"UID\",\"SamAccountName\"}
Set-Content -Path \"monfichier.csv\" -Value $content
[/code:1]
tu as obtenu un fichier CSV suite a une extract open ldap
Avec en en tête une colonne nommée UID
donc si tu veux juste remplacer UID par SamaccountName
Il suffit de faire
[code:1]
$content= Get-Content \"monfichier.csv\" | Foreach {$_-replace \"UID\",\"SamAccountName\"}
Set-Content -Path \"monfichier.csv\" -Value $content
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
-
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 13 ans 2 mois #13448
par Gabriel
Réponse de Gabriel sur le sujet Re:Fichier CSV
Attention Darphboubou, ta commande implique que les 3 lettres UID ne sont pas utilisées dans les données du fichier CSV.
si par exemple ton fichier CSV contient les données suivantes
[code:1]
toto,uid,tata,tutu
toto,uid,tata,tutu
TOTO,UID,TATA,TUTU
toto,oid,tata,tutu
toto,ouidzz,tata,tutu
[/code:1]
ça donne cela
[code:1]
PS C:\temp> $content= get-content .\test.csv | Foreach {$_-replace \"UID\",\"SamAccountName\"}
PS C:\temp> $content
toto,SamAccountName,tata,tutu
toto,SamAccountName,tata,tutu
TOTO,SamAccountName,TATA,TUTU
toto,oid,tata,tutu
toto,oSamAccountNamezz,tata,tutu
[/code:1]
si par exemple ton fichier CSV contient les données suivantes
[code:1]
toto,uid,tata,tutu
toto,uid,tata,tutu
TOTO,UID,TATA,TUTU
toto,oid,tata,tutu
toto,ouidzz,tata,tutu
[/code:1]
ça donne cela
[code:1]
PS C:\temp> $content= get-content .\test.csv | Foreach {$_-replace \"UID\",\"SamAccountName\"}
PS C:\temp> $content
toto,SamAccountName,tata,tutu
toto,SamAccountName,tata,tutu
TOTO,SamAccountName,TATA,TUTU
toto,oid,tata,tutu
toto,oSamAccountNamezz,tata,tutu
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- darphboubou
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 135
- Remerciements reçus 0
il y a 13 ans 2 mois #13449
par darphboubou
Réponse de darphboubou sur le sujet Re:Fichier CSV
C'est pas faux
Connexion ou Créer un compte pour participer à la conversation.
- SiSMik
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 492
- Remerciements reçus 0
il y a 13 ans 2 mois #13451
par SiSMik
Réponse de SiSMik sur le sujet Re:Fichier CSV
Sinon pour réduire encore les risques
[code:1]$content= get-content .\test.csv | Foreach {$_-replace \",UID,\",\",SamAccountName,\"}[/code:1]
[code:1]$content= get-content .\test.csv | Foreach {$_-replace \",UID,\",\",SamAccountName,\"}[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.047 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Fichier CSV