我想导入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" {
#?
}
非常感谢
答案 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
然而,专注于正则表达式