1

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" {
    #?
} 

どうもありがとう

4

3 に答える 3

0

この正規表現を試してください

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

パールでやってみた

#!/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

ただし、正規表現に注目してください

于 2013-02-22T09:43:15.113 に答える
0

次のことを試してください。

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

姓が「d」で始まり、年齢が 20 歳以上のレコードを除外します。最後に、結果を という配列に保存します。$persons

于 2013-02-22T09:35:35.203 に答える
0
$persons | Where-Object {$_.LastName -like "d*" -and $_.Age -gt 20}
于 2013-02-22T09:31:53.673 に答える