San*_*osh 2 .net regex csv powershell
我有一个文本文件,其中包含几行,每行都是逗号分隔的字符串.每行的格式是:
<Name, Value, Bitness, OSType>
Bitness并且OSType是可选的.
例如,文件可以是这样的:
Name1, Value1, X64, Windows7
Name2, Value2, X86, XP
Name3, Value3, X64, XP
Name4, Value3, , Windows7
Name4, Value3, X64 /*Note that no comma follows X64 */
....
....
Run Code Online (Sandbox Code Playgroud)
我想将每一行解析成4个变量并对其执行一些操作.这是我使用的PowerShell脚本..
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
}
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否可以在PowerShell中使用正则表达式执行此操作.你能提供样本代码吗?请注意,每行中的第3个和第4个值可以选择为空.
您可以使用cmdlet 的-Header参数为导入的文件文件指定备用列标题行Import-Csv:
Import-Csv .\test.txt -Header Col1,Col2,Bitness,OSType
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10319 次 |
| 最近记录: |