我正在尝试删除一个"-";导入数据列中的短划线。我只是不知道该怎么做,任何帮助都将不胜感激。
我正在做的过程是从现有的CSV文件中导入数据,进行一些更改,并将其导出到另一个CSV文件中以导入到应用程序中。该应用程序现在不再支持"-"Dash,所以我需要用空格代替它。
现有数据0001-00001,姓氏,名字首字母。
我的Powershell脚本
#Import Perfect Law File "clntsimp.imp" File inserting Headers inot the existing data
Import-Csv clntsimp.imp -Header Name,LastName,FirstName |
#Piped above information and remove the "-" from the "Name" column and add a "Blank Space"
$Content = Get-Content $_."
ForEach-Object { $Content -replace "-", " "}} |
#Piped above information and combine the "LastName" and "FirstName" Fields inot a single field named "Description" seperated by a "," and "Blank Space"
Select-Object *,@{Name='Description';Expression={$_.Lastname,$_.FirstName -join ', '}} |
#piped above information adding a third column header "Status" and fill in the rows with "Active"
Select-Object Name,Description,@{Name='Status';Expression={'Active'}} |
#Piped above information and export to a new file named "Sendpro.cvs"
Export-Csv sendpro1.csv -NoTypeInformation
我正在寻找的结果是
"名称"描述"状态";"0001 00001"姓氏,名字首字母&""活动";
除了下面的这个新部分,一切都如预期,我只是不知道如何替换"-"Dash有一个空间来容纳我需要进行的更改
#Piped above information and remove the "-" from the "Name" column and add a "Blank Space"
$Content = Get-Content $_.Name"
ForEach-Object { $Content -replace "-", " "}} |
任何帮助都将不胜感激,我仍在学习Powershell。感谢
在您的-Replace '-',' '
示例中,应该已经满足了所有需要。有不少语法问题,但我认为这是由于您对代码进行了清理。话虽如此,您可以使用pscustomobject
来重新排序属性的结构。
Import-Csv .clntsimp.imp -Header Name, LastName, FirstName | ForEach-Object -Process {
[pscustomobject]@{
Name = $_.Name -replace 'p{Pd}',' '
Description = $_.LastName, $_.FirstName -join ', '
Status = 'Active'
}
} #| Export-Csv -Path .sendpro1.csv -NoTypeInformation
这允许通过将属性分配给pscustomobject
来进行一些代码更改。现在,剩下的就是导出回一个新的csv。
至于'p{Pd}',' '
部分,由于-Replace
是RegEx运算符,您可以使用该Unicode类来覆盖em短划线和连字符(只是为了以防万一,这就是为什么它不能"工作">(。