我有一个csv导出,我得到一些信息。第1行和第2行下面的4行是罚款。
第3行和第4行需要删除“2 x”,并且第4行只需要在逗号(包括逗号)后面省略名称henrietta。
我想使用通配符代替数字
Linda
bobbyjoe
2 x ash
3 x Henrietta,suzyann,waynebruce,parkerpeter
目前即时使用如下。只有,我还没有解决部分问题,我没有在网上找到我理解的答案。
$filepath = "c:\mycsv.csv"
$bad2 = "2 x "
$good2 = `b
$bad2 = "3 x "
$good2 = `b
get-content $filepath | % { $_ -replace $bad2 , $good2 } | % { $_ -replace $bad3 , $good3 } | set-content $saveloc\tidied-$date.csv
答案 0 :(得分:4)
您熟悉正则表达式吗?查看regex的代码Wiki,并查看Reference - What does this regex mean?
PowerShell中的-replace
运算符正在使用正则表达式替换,因此它非常容易替换"(任何数字)(空格)(文字x)(空格)":
$bad2 = '\d x '
# or
$bad2 = '[0-9] x '
# better
$bad2 = '^\d x '
get-content $filepath | % { $_ -replace $bad2, $good2 }
更好的版本将匹配锚定到字符串的开头;这是插入符^
的作用。
正则表达式非常强大,PowerShell对它们提供了极好的支持。