powershell - Powershell 在 .csv 对象上执行 -replace
问题描述
相当简单的请求,但很挣扎。我有一个包含 30 列的 .csv 文件。一列“sku”中有我需要修改的产品代码。然后我需要将包括修改列在内的所有数据写回原始文件。
到目前为止,我已经选择并扩展了“sku”对象并使用了一些正则表达式进行修改,这可以按预期工作。
但是,如果我使用 Export-Csv 导出文件,我只会得到文本属性值 .length。我怀疑是因为 -replace 隐式地将对象转换为字符串?
此外,我没有选择任何其他列,因为我不知道如何选择所有其他属性并一起执行 -replace。
请帮帮我。
$CSVFiles = Get-ChildItem -Path D:\Exports\Test\AMAZON -File -Filter '*.csv' | Where Extension -eq '.csv'
foreach ($csv in $CSVFiles) {
$csvOutput = Import-Csv $csv.FullName
$sku = $csvOutput | Select-Object -ExpandProperty sku |
Foreach-Object {$_ -replace '^.*?(?=T)',''} |
Export-Csv $csv.FullName -NoType
}
解决方案
随着Select-Object -ExpandProperty
您将具有属性的丰富而强大的对象变成愚蠢的文本。;-)
这应该更接近您的需要:
$CSVFiles =
Get-ChildItem -Path D:\Exports\Test\AMAZON -File -Filter '*.csv'
foreach ($csv in $CSVFiles) {
$csvOutput = Import-Csv $csv.FullName
$csvOutput |
Foreach-Object {
$_.sku = $_.sku -replace '^.*?(?=T)'
$_
} |
Export-Csv -Path $csv.FullName -NoTypeInformation -Force
}
推荐阅读
- c# - C# AD 组计数不正确
- terraform - 有条件地将 load_balancer 添加到 terraform 中的 aws_ecs_service
- delphi - 字符串在两个字母之间,两个字母中的一个文本到Delphi
- matrix - Fortran中的稀疏矩阵向量积
- php - 联邦快递追踪 API 响应:404
- android - 在listview颤动中的textformfield中按下数字后键盘关闭
- ios - 可变字节编码方法在 Swift 中不起作用
- r - 在 R 中构造这个稀疏矩阵的最快方法是什么
- python - 无法使用 lxml 解析 ArcGIS 服务目录站点地图
- java - 如何从文件中读取并将一行上的多个整数存储到arraylist中?