2017-04-21 90 views
-3

我需要替換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 

回答

2

我不知道我完全理解你的問題,我覺得你是擔心你的CSV結構,而不是有沒有引號城市的可能性,其中逗號不應該被刪除?對我來說沒有多大意義,因爲那可能會破壞事情。無論如何...

$x = Import-CSV ex.csv 
$x |% {$_.City = $_.City.Replace(',','')} 
$x | Export-CSV out.csv 

這可能適合你。

+0

我的例子是一個簡單的例子。可能有引號的列可能並不總是顯而易見的。但是,主要目標是僅替換引用字符串中的逗號。這將保存CSV格式的導入。 –

+0

是的,你不能取代引號以外的任何逗號。 :)通過替換方法是不可能的,因爲當您將Import-Csv轉換爲Powershell對象表時。因此,此解決方案將始終爲您工作,您只需爲其他列添加其他語句,並根據需要重新命名即可。 –

+1

如果你沒有/想要一個結構化文件,你也可以使用像這樣的'Import-csv ex.csv | Get-member -MemberType'NoteProperty'| Select-Object -ExpandProperty'Name''來創建一個標題數組,並用上面的方法遍歷它。 –

0

你可以改變的分隔符,更換和重新改變分隔符:

(import-csv "c:\temp\file1.csv" | ConvertTo-Csv -Delimiter ";" -NoType).Replace(',', '').Replace(';', ',') | out-file "c:\temp\file1.csv" 
相關問題