我在orders.csv中有一个这样的列表:
Order
1025405008
1054003899
1055003868
1079004365我希望将单元号(第2-4个字符)和整个订单号添加到一个数组中,因此它将如下所示:
"0254","1025405008"
"0540","1054003899"
etc
etc我希望忽略前缀"1“。到目前为止,用我有限的PS知识,我已经创建了变量:
$Orders = Import-csv c:\Orderlist.csv
$Units = $Orders | Select @{LABEL="Unit";EXPRESSION={$_.Order.Substring(1,4)}}所以我希望把这两个组合成一个数组。我试过了
$array = $Units,Orders任何帮助都将不胜感激。
发布于 2016-09-26 18:53:58
对于只有这一列的大型CSV文件,使用regexp要比使用Select快得多
$combined = [IO.File]::ReadAllText('c:\Orderlist.csv') `
-replace '(?m)^\d(\d{4})\d+', '"$1","$&"' `
-replace '^Order', 'Unit, Order' | ConvertFrom-Csv在2MB文件中处理100k条记录的速度提高约6倍(700ms vs 4100ms)
发布于 2016-09-26 18:30:03
您只需在Select语句中选择顺序并使用ConvertTo-Csv cmdlet即可获得所需的输出:
$Orders = Import-csv c:\Orderlist.csv
$unitOrderArray = $Orders | Select @{LABEL="Unit";EXPRESSION={$_.Order.Substring(1,4)}}, Order
$unitOrderArray | ConvertTo-Csv -NoTypeInformation输出:
"Unit","Order"
"0254","1025405008"
"0540","1054003899"
"0550","1055003868"
"0790","1079004365"https://stackoverflow.com/questions/39700377
复制相似问题