非常に大きなテキスト ファイル (600 MB) があり、そのファイルから特定の行を削除したいと考えています。
削除したい行番号を知っています。これを達成するための本当に簡単な方法はありますか?
非常に大きなテキスト ファイル (600 MB) があり、そのファイルから特定の行を削除したいと考えています。
削除したい行番号を知っています。これを達成するための本当に簡単な方法はありますか?
PowerShell の場合:
$linesToRemove = 15,534,814,4632
$encoding = 'ASCII' # or 'UTF8', depending on what you need
Get-Content foo.sql |
ForEach-Object { $i=0 } { $i++ } |
Where-Object { $linesToRemove -notcontains $i }
これを行う簡単な方法はありません。ファイル全体を読み取り、必要な変更を加えてから、ファイルを書き直す必要があります。ファイルの途中から他の方法で削除することはできません。
マイナーな最適化として、最初の変更に続いてファイルの一部を書き直すだけで済みます。しかし、その後全体を書き直さなければなりません。削除された行がファイルの末尾にある場合、これは重要な最適化になる可能性があります。
このため、このような変更を行う場合、大きなテキスト ファイルは最適な保存形式ではありません。データベースはパフォーマンスの向上につながります。
これは C# で簡単に実行できます。しかし、これがあなたの望むものかどうかはわかりません。
回答ありがとうございます。Windows 用の Vim エディターで簡単な方法を見つけました。
参考までに、問題のファイルは mysql データベースを再作成するために提供された .sql ファイルであったため、実際に操作するしかありませんでした。
みんなありがとう。