我是PowerShell的新手。我有一個.csv文件,其中數據由製表符分隔。我想用PowerShell替換所有的標籤。使用PowerShell替換.csv文件中的選項卡
還有一點,有些列沒有數據。
我試過這個,但得到錯誤。
get-content file_name.csv | ForEach-Object { $_ -replace '`t',',' } > changed_file.csv
錯誤:位置參數無法找到接受 參數 '$空'
在此先感謝。
我是PowerShell的新手。我有一個.csv文件,其中數據由製表符分隔。我想用PowerShell替換所有的標籤。使用PowerShell替換.csv文件中的選項卡
還有一點,有些列沒有數據。
我試過這個,但得到錯誤。
get-content file_name.csv | ForEach-Object { $_ -replace '`t',',' } > changed_file.csv
錯誤:位置參數無法找到接受 參數 '$空'
在此先感謝。
使用Import-CSV
cmdlet讀取CSV文件。從Powershell 2.0開始,可以使用參數-Delimiter
指定字段分隔符是否不是逗號。
使用Export-CSV
保存修改的CSV。通過使用內置的cmdlet,所有的CSV解析和繁重工作都已完成。
建議的替換單個字符的方式可能會產生意想不到的結果。考慮一個文件,像這樣並承擔字段由製表符分隔,
Id Name Data
1 Tom "Big boss"
2 Dick "Senior Engineer"
3 Harry "QA<TAB> Manager"
由於<TAB>
字符出現在數據列中,搜索的幼稚做法和替代會產生像這樣一個第四列,
Id, Name, Data, Huh?
3, Harry, "QA", "Manager"
這會對進一步的CSV處理造成嚴重破壞。
內置的CSV cmdlet將文件解析爲實際的CSV數據,因此在錯誤的位置上沒有混合列 - 假設源CSV格式良好。
就像vonPryz已經回答。你會想這樣做:
Import-Csv old.csv -Delimiter "`t" | Export-Csv new.csv -Delimiter "," -NoTypeInformation
謝謝@Kirill的答覆。但我得到「錯誤:無法找到接受參數$ null'」的位置參數。我更多的事情**文件中的某些列沒有任何數據(null)。** – VivekT