67GBの.csvファイルがあります(わかっています...わかっています...)
ファイルが破損しているため、ファイルから4,125,878行目を削除する必要があります。私のCSV解析ツールはそれを無視したりスキップしたりしません。
Icouldsed
を使用して次のようなことを行う
sed '4125878d' in.csv > out.csv
しかし、それは時間とディスク容量の点で非常に費用のかかる操作になります。
sed -i '4125878d' in.csv
を使用すると、操作に時間がかかります。
すばやく巨大なファイルの途中から行を削除する方法はありますか?
私は信じていません。
Sedまたはそのために使用するプログラムが、一時ファイルではなくその場で変更を行うのに十分賢い場合でも、削除する行の開始後にすべてのデータを書き換える必要があります。
行を削除するということは、ファイルのすべての内容をその時点から前の行の終わりまで左にシフトすることを意味します。いずれにせよ、その時点からファイルを書き直す必要があります。
オンザフライで実行します。
csv-parser -f <(cat my-huge.csv | sed '4125878d')