使用PowerShell解析逗号分隔文件

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个值可以选择为空.

Sha*_*evy 6

您可以使用cmdlet 的-Header参数为导入的文件文件指定备用列标题行Import-Csv:

Import-Csv .\test.txt -Header Col1,Col2,Bitness,OSType
Run Code Online (Sandbox Code Playgroud)