Windows - Fjern specifikke linjer fra en meget stor tekstfil

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en meget stor tekstfil (600mb), og jeg vil fjerne specifikke linjer fra den pågældende fil.


Jeg kender de linjenumre, jeg vil fjerne. Er der en virkelig enkel måde at opnå dette på?

Bedste reference


Der er ingen simpel måde at gøre dette på. Du skal læse hele filen, foretage de nødvendige ændringer og derefter genskrive filen. Du kan ikke slette fra midten af ​​en fil på nogen anden måde.


Som en mindre optimering behøver du kun at omskrive den del af filen, der følger efter den første ændring. Men du skal omskrives helt efter det. Hvis dine slettede linjer er i slutningen af ​​filen, kan dette være en betydelig optimering.


Af denne grund er store tekstfiler ikke det bedste lagringsformat, hvis du vil foretage sådanne ændringer. En database vil føre til bedre ydeevne.

Andre referencer 1


Dette kan gøres i C # med lethed.
Men jeg ved ikke, om det er det, du vil have.

Andre referencer 2


Tak for svarene - Jeg har fundet en enkel måde at gøre det i Vim-editoren til Windows.


Bare ved hjælp af info var den pågældende fil en leveret .sql-fil til genoprettelse af en mysql-database, så der ikke var nogen mulighed, men at manipulere det virkelig.


Tak igen, fyre.

Andre referencer 3


I 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 }