Question
Variables cherche et remplace dans fichier
- Regis
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 14 ans 2 mois #10905
par Regis
Variables cherche et remplace dans fichier a été créé par Regis
Bonjour à tous et bonne année 2012 !!!
je viens vers vous car j'ai un problème de variables cherche et remplace.
Je cherche a remplacer des variables dans un fichier par une liste de variables correspondant a une table.
Le problème est que mon script m'écris une ligne pour chaque modification effectuée.
Je voudrais qu'il écrive la ligne seulement une fois toutes les variables trouvées.
(les fichiers $original_file et destination_file doivent donc contenir le même nombre de ligne...)
Voici le code actuel:
$lookupTable = @{
'variable a' = 'variable 1'
'variable b' = 'variable 2'}
$original_file = 'Files1.csv'
$destination_file = 'Files2.csv'
Get-Content -Path $original_file | ForEach-Object {
$line = $_
$lookupTable.GetEnumerator() | ForEach-Object {
if ( $line -match $_.Key)
{$line -replace $_.Key, $_.Value
}
}
$line
} |
Set-Content -Path $destination_file
je viens vers vous car j'ai un problème de variables cherche et remplace.
Je cherche a remplacer des variables dans un fichier par une liste de variables correspondant a une table.
Le problème est que mon script m'écris une ligne pour chaque modification effectuée.
Je voudrais qu'il écrive la ligne seulement une fois toutes les variables trouvées.
(les fichiers $original_file et destination_file doivent donc contenir le même nombre de ligne...)
Voici le code actuel:
$lookupTable = @{
'variable a' = 'variable 1'
'variable b' = 'variable 2'}
$original_file = 'Files1.csv'
$destination_file = 'Files2.csv'
Get-Content -Path $original_file | ForEach-Object {
$line = $_
$lookupTable.GetEnumerator() | ForEach-Object {
if ( $line -match $_.Key)
{$line -replace $_.Key, $_.Value
}
}
$line
} |
Set-Content -Path $destination_file
Connexion ou Créer un compte pour participer à la conversation.
- Gaga
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 39
- Remerciements reçus 0
il y a 14 ans 2 mois #10906
par Gaga
Réponse de Gaga sur le sujet Re:Variables cherche et remplace dans fichier
Salut,
Ci-dessous un bout de code à améliorer surement :
[code:1]$entree='Z:\Documentation\PowerShell\entree.txt'
$sortie='Z:\Documentation\PowerShell\sortie.txt'
$lookupTable = @{ 'variableA' = 'VARIABLE1'
'variableB' = 'VARIABLE2' }
[array]$cles=$lookuptable.keys
[array]$fichier = get-content -path $entree
foreach ($ligne in $fichier)
{
$ligneTemp = $ligne
foreach ($cle in $cles)
{
if ( $ligne.contains(\"$cle\"«») ) { $ligneTemp = $ligneTemp.replace(\"$cle\",$lookupTable[\"$cle\"]) }
}
add-content -path $sortie -value $ligneTemp
}[/code:1]
Attention la méthode \"contains\" est sensible à la case.
Ce code est à améliorer, je les tester en vitesse sur un fichier simple, c'est un premier jet, tu peux le blinder avec plus de contrôles.
Ci-dessous un bout de code à améliorer surement :
[code:1]$entree='Z:\Documentation\PowerShell\entree.txt'
$sortie='Z:\Documentation\PowerShell\sortie.txt'
$lookupTable = @{ 'variableA' = 'VARIABLE1'
'variableB' = 'VARIABLE2' }
[array]$cles=$lookuptable.keys
[array]$fichier = get-content -path $entree
foreach ($ligne in $fichier)
{
$ligneTemp = $ligne
foreach ($cle in $cles)
{
if ( $ligne.contains(\"$cle\"«») ) { $ligneTemp = $ligneTemp.replace(\"$cle\",$lookupTable[\"$cle\"]) }
}
add-content -path $sortie -value $ligneTemp
}[/code:1]
Attention la méthode \"contains\" est sensible à la case.
Ce code est à améliorer, je les tester en vitesse sur un fichier simple, c'est un premier jet, tu peux le blinder avec plus de contrôles.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 14 ans 2 mois #10908
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Variables cherche et remplace dans fichier
Salut,
Gaga écrit:
Gaga écrit:
Ou utiliser cette fonction , mais si ton code répond déjà au besoin, il n'y a pas d'obligationtu peux le blinder avec plus de contrôles.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Regis
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 14 ans 2 mois #10968
par Regis
Réponse de Regis sur le sujet Re:Variables cherche et remplace dans fichier
Parfait Gaga j'ai utilisé ton code en remplacant les \"contains\" et \"replace\" par -replace -match afin de ne pas utiliser la casse.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.046 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Variables cherche et remplace dans fichier