Windows - удаление определенных строк из очень большого текстового файла - PullRequest
0 голосов
/ 22 марта 2012

У меня очень большой текстовый файл (600 МБ), и я хочу удалить определенные строки из этого файла.

Я знаю номера строк, которые хочу удалить.Есть ли действительно простой способ добиться этого?

Ответы [ 4 ]

0 голосов
/ 22 марта 2012

В 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 }
0 голосов
/ 22 марта 2012

Это можно легко сделать в C #. Но я не знаю, хотите ли вы этого.

0 голосов
/ 22 марта 2012

Спасибо за ответы - я нашел простой способ сделать это в редакторе Vim для Windows.

В порядке информации, рассматриваемый файл представлял собой поставляемый файл .sql для повторного создания базы данных mysql, поэтому у него не было выбора, кроме как манипулировать им действительно.

Еще раз спасибо, ребята.

0 голосов
/ 22 марта 2012

Нет простого способа сделать это. Вы должны прочитать весь файл, внести необходимые изменения, а затем переписать файл. Вы не можете удалить из середины файла другим способом.

В качестве незначительной оптимизации вам нужно переписать только часть файла после первой модификации. Но вы должны переписать весь после этого. Если удаленные строки находятся в конце файла, это может быть существенной оптимизацией.

По этой причине большие текстовые файлы - не лучший формат хранения, если вы хотите внести такие изменения. База данных приведет к повышению производительности.

...