2017-02-21 19 views
0

PowerShellを初めて使用しています。データがタブで区切られた.csvファイルがあります。 PowerShellを使ってすべてのタブを '、'に置き換えたいタブをPowerShellを使用して.csvファイルの '、'に置き換えます。

もう1つ、一部の列にはデータがありません

私はこれを試しましたが、エラーが発生しました。

get-content file_name.csv | ForEach-Object { $_ -replace '`t',',' } > changed_file.csv 

エラー:位置パラメータが見つからない 引数 '$ヌル' 事前に

感謝を受け入れます。

答えて

2

CSVファイルの読み取りは、Import-CSVコマンドレットで行います。 Powershell 2.0以来、フィールドの区切り文字がコンマ以外のものかどうかを指定するのに、-Delimiterというパラメータを使うことができます。

Export-CSVを使用して、変更されたCSVを保存します。ビルトインのコマンドレットを使用することにより、CSVの解析と重い持ち上げはすべて完了しています。

単一のcharを置き換える提案された方法は、予期しない結果をもたらす可能性があります。 <TAB>文字は、データ列内の検索のナイーブなアプローチを表示され、置き換えたよう

Id, Name, Data,  Huh? 
3,  Harry, "QA",  "Manager" 
、そのような4番目の列を作成します
Id Name Data 
1  Tom  "Big boss" 
2  Dick "Senior Engineer" 
3  Harry "QA<TAB> Manager" 

、そのようなファイルを検討し、フィールドはタブで区切られていると仮定

さらにCSV処理に大混乱を引き起こすでしょう。

組み込みのCSVコマンドレットはファイルを実際のCSVデータとして解析するため、ソースCSVが整形式であると仮定すると、間違った位置に列が混在することはありません。

0

vonPryzと同じように答えました。あなたは次のようなことをしたいと思うでしょう:

Import-Csv old.csv -Delimiter "`t" | Export-Csv new.csv -Delimiter "," -NoTypeInformation 
+0

ありがとう@Kirill for reply。しかし、私は "エラーが発生しています:引数 '$ null'を受け入れる位置パラメータが見つかりません"。私はもっ​​ともっと**ファイル内のいくつかの列にはデータ(null)がありません。** – VivekT

関連する問題