使用正则表达式导入-Csv

时间:2013-02-22 09:27:13

标签: regex powershell csv

我想导入CSV并使用某些正则表达式过滤掉数据。输入CSV的示例:

John;Doe;18
Peter;Test;21

我想过滤掉个别名称,例如:我只想看到姓氏以'd'开头的人和20岁及以上的人。

如何将过滤后的数据写入新数组?这是我到目前为止编写的代码:

$persons = import-csv -Header "surname", "lastname", "age" -delimiter ";" data.csv
$persons | ForEach-Object {
if $_.lastname -match "^d" {
    #?
} 

非常感谢

3 个答案:

答案 0 :(得分:0)

$persons | Where-Object {$_.LastName -like "d*" -and $_.Age -gt 20}

答案 1 :(得分:0)

尝试以下方法:

$persons = Import-Csv -Header "surname", "lastname", "age" -Delimiter ";" data.csv | where { 
    $_.lastname -match '^d' -and $_.age -ge 20
}

它过滤掉姓氏以“d”开头且年龄为20岁或以上的记录。最后,它将结果保存在名为$persons

的数组中

答案 2 :(得分:0)

试试这个正则表达式

^([^;]*);([^;]*);([^;]*)$

用perl

尝试
#!/usr/bin/perl

use strict;

while (<>) {

    if ( /^([^;]*);([^;]*);([^;]*)$/ ){
        print "first =". $1 . "\n";
        print "last  =". $2 . "\n";
        print "age   =". $3 . "\n";
    }
}

给出了这个输出

first =John
last  =Doe
age   =18

first =Peter
last  =Test
age   =21
然而,

专注于正则表达式