There is no way to remove bytes from the middle of a file without rewriting it, and there is no way to rewrite it without reading it. However, 500MiB is really nothing, unless you need to access it over a (slow) network or very slow local media such as tape, which is thankfully, finally becoming less common. With typical consumer-level HDDs from a few years ago, you're probably looking at a few seconds.
The basic structure would be something like this:
while (<>) { print unless /^pattern to skip$/; }
If you need to do something based on line number, use $. to get the current line number.
This also leads itself fairly readily to a one-liner if your logic is relatively simple:
$ perl -nle 'print unless /^pattern to skip$/ or $. == 10' filename.txtIn reply to Re: Edit huge file
by rjt
in thread Edit huge file
by AI Cowboy
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |