在powershell中用双引号替换字符串
问题描述:
我需要替换csv文件中的某些文本。我只想在双引号内替换逗号。我将如何在Powershell中执行此操作?在powershell中用双引号替换字符串
Example input:
ID, City, State
1,"Cape, Town",Tx
2,Sarasota,Fl
3,"Long, Beach",Ca
Example output:
ID, Name, Title
1,"Cape Town",Tx
2,Sarasota,Fl
3,"Long Beach",Ca
答
我不知道我完全理解你的问题,我觉得你是担心你的CSV结构,而不是有没有引号城市的可能性,其中逗号不应该被删除?对我来说没有多大意义,因为那可能会破坏事情。无论如何...
$x = Import-CSV ex.csv
$x |% {$_.City = $_.City.Replace(',','')}
$x | Export-CSV out.csv
这可能适合你。
答
你可以改变的分隔符,更换和重新改变分隔符:
(import-csv "c:\temp\file1.csv" | ConvertTo-Csv -Delimiter ";" -NoType).Replace(',', '').Replace(';', ',') | out-file "c:\temp\file1.csv"
我的例子是一个简单的例子。可能有引号的列可能并不总是显而易见的。但是,主要目标是仅替换引用字符串中的逗号。这将保存CSV格式的导入。 –
是的,你不能取代引号以外的任何逗号。 :)通过替换方法是不可能的,因为当您将Import-Csv转换为Powershell对象表时。因此,此解决方案将始终为您工作,您只需为其他列添加其他语句,并根据需要重新命名即可。 –
如果你没有/想要一个结构化文件,你也可以使用像这样的'Import-csv ex.csv | Get-member -MemberType'NoteProperty'| Select-Object -ExpandProperty'Name''来创建一个标题数组,并用上面的方法遍历它。 –