【发布时间】:2018-04-12 19:37:22
【问题描述】:
我正在通过Import-CSV 读取一个大型 csv 文件,并且有一列数据格式如下; v00001048、v00019045 或 v0036905。我想在 v 之后但在任何数字之前而不是零之前替换所有零(0),所以上面的文字变成了; v-1048、v-19045 或 v-36905。进行了大量搜索但没有成功的结果。
【问题讨论】:
标签: powershell import-csv
我正在通过Import-CSV 读取一个大型 csv 文件,并且有一列数据格式如下; v00001048、v00019045 或 v0036905。我想在 v 之后但在任何数字之前而不是零之前替换所有零(0),所以上面的文字变成了; v-1048、v-19045 或 v-36905。进行了大量搜索但没有成功的结果。
【问题讨论】:
标签: powershell import-csv
如果您有一个包含如下数据的 CSV(例如“data.csv”):
Property1,Property2,Property3
SomeText,MoreText,v00001048
然后您可以使用此技术替换 Property3 中的前导零:
$data = Import-csv .\data.csv
$data |
ForEach-Object {
$_.Property3 = $_.Property3 -replace "(?<=v)0+(?=\d+)","-"
}
如果该属性没有任何前导零开头(例如v1048),它将保持不变。如果您仍然希望它插入“-”,则将正则表达式模式更改为:
"(?<=v)0*(?=\d+)"
【讨论】:
Import-Csv .\data.csv -Header A,B,C 然后使用 $_.C 而不是 $_.Property3
v0047003 按预期变为 v-47003。
v-47003 预期