Question Variables cherche et remplace dans fichier

Plus d'informations
il y a 14 ans 2 mois #10905 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

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 2 mois #10906 par Gaga
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.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 2 mois #10908 par Laurent Dardenne
Salut,
Gaga écrit:

tu peux le blinder avec plus de contrôles.

Ou utiliser cette fonction , mais si ton code répond déjà au besoin, il n'y a pas d'obligation :)

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 2 mois #10968 par Regis
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
Propulsé par Kunena