J'ai un fichier texte qui contient plusieurs lignes, chacune étant une chaîne séparée par des virgules. Le format de chaque ligne est:Analyse d'un fichier séparé par des virgules à l'aide de PowerShell
<Name, Value, Bitness, OSType>
Bitness
et OSType
sont facultatifs.
Par exemple, le fichier peut ressembler à ceci:
Name1, Value1, X64, Windows7
Name2, Value2, X86, XP
Name3, Value3, X64, XP
Name4, Value3, , Windows7
Name4, Value3, X64 /*Note that no comma follows X64 */
....
....
Je veux analyser chaque ligne en 4 variables et d'effectuer une opération sur elle. Ceci est le script PowerShell que j'utilise ..
Get-Content $inputFile | ForEach-Object {
$Line = $_;
$_var = "";
$_val = "";
$_bitness = "";
$_ostype = "";
$envVarArr = $Line.Split(",");
For($i=0; $i -lt $envVarArr.Length; $i++) {
Switch ($i) {
0 {$_var = $envVarArr[$i].Trim();}
1 {$_val = $envVarArr[$i].Trim();}
2 {$_bitness = $envVarArr[$i].Trim();}
3 {$_ostype = $envVarArr[$i].Trim();}
}
}
//perform some operation using the 4 temporary variables
}
Cependant, je voulais savoir s'il est possible de le faire en utilisant regex dans PowerShell. Voulez-vous s'il vous plaît fournir un exemple de code pour cela? Notez que les 3ème et 4ème valeurs de chaque ligne peuvent être facultativement vides.
S'il vous plaît ne pas utiliser Regex pour analyser CSV. :) C'est un crime contre l'humanité. – Josh