2016-09-15 22 views
2

私は複数の行と2つの列を持つCSVを持っています: "名前"と "情報"。CSVから1行を削除する

私は条件が満たされた場合、私は行を削除したい、CSVをループと条件の各ラインをチェックしています:

for ($i=0; $i -le $CSV.length; $i++) 
{    
    if ($CSV.name == "Fred") 
    { 
     #remove $CSV[$i] -- that one line; both "Name" and "Information" 
    } 
} 

私が使用するソリューションを見てきましたGet-ContentまたはImport-Csv一時的なファイルが、私はそれの周りに私の頭をラップしていないと簡単な方法がなければならないことを想像してください。

いずれにせよ、助けてください!

答えて

4

私はImport-CSVコマンドレットを使用してCSVを読んで、エントリをフィルタするWhere-Objectコマンドレットを使用します。

$csv = import-csv 'YourPath.csv' 
$csv | Where Name -ne 'Fred' | Export-Csv 'YourPath.csv' -NoTypeInformation 
+1

良いアプローチを、私はこの答えは、それが完全に読み込まれる前に、ファイル 'YourPath.csv'を上書きするリスク怖い:最後に、バックExport-CSVコマンドレットを使用してCSVを作成します。これは、新しいファイルに保存するか、書き込む前に変数に読み込む必要があります。 –

+0

@Burt_Harrisそうです。私は脚本を採用する予定です。 –

+3

temp変数で優雅さを失います。これを1行にするもう1つの方法は、import-csvを括弧の中に入れることです。例えば、 '(import-csv。\ test.csv)| Name -ne 'Fred' | export-csv test.csv -NoTypeInformation' –

関連する問題