If he wanted to lop off the first xxx bytes, without "touching" the remainder of the file... then it's IMPOSSIBLE under linux/unix.
You mention flat-file-database... it's that's the case, I hope he can stop updates while removing the first 300 lines... else, the problem is just a bit harder (in fact, it can become impossible if his data base engine does not use some form of file locking.) - jim On Wed, 28 Jun 2006 17:50:14 -0700 (PDT) Sebastian Smith <[EMAIL PROTECTED]> wrote: > I think what Grant meant by "in place" was that he didn't want to read the > entire file, just lop off the first 300 lines -- perhaps he can correct > me. I'm guessing storage space isn't an issue. Regardless, I don't know > of a way to do that. > > You really need to get away from those flat file databases Grant ;) > > > On Wed, 28 Jun 2006, James Washer wrote: > > > it's the "working in place" that makes this difficult, else there are > > countless ways to do this, including the simple perl > > > > perl -ne 'next unless $. >300;print' > > > > On Wed, 28 Jun 2006 17:26:47 -0700 > > "Brandon Mitchell" <[EMAIL PROTECTED]> wrote: > > > >> This is an interesting problem, and seems to be revealing a little bit > >> about what type of user/admin is in each of us. > >> > >> So where's Nick with an Emacs Lisp macro for this task? :P > >> > >> On 6/28/06, Anna <[EMAIL PROTECTED]> wrote: > >>> find out which byte terminates the first 300 lines. maybe... > >>> > >>> ~$ BYTES=$(head -300 nameofbigfile.txt | wc -c) > >>> > >>> then use that info with dd skip the first part of the input file... > >>> > >>> ~$ dd if=nameofbigfile.txt of=truncatedversion.pl ibs=$BYTES skip=1 > >>> > >>> one of many ways, I'm sure. I think this way should be pretty fast > >>> because it works on a line by line basis for just a small part of the > >>> file. The rest, with dd, is done in larger pieces. > >>> > >>> - Anna > >>> > >>> > >>> On Wed, Jun 28, 2006 at 01:01:03PM -0700, Grant Kelly wrote: > >>>> Alright unix fans, who can answer this the best? > >>>> > >>>> I have a text file, it's about 2.3 GB. I need to delete the first 300 > >>>> lines, and I don't want to have to load the entire thing into an > >>>> editor. > >>>> > >>>> I'm trying `sed '1,300d' inputfile > output file` but it's taking a > >>>> long time (and space) to output everything to the new file. > >>>> > >>>> There has got to be a better way, a way that can do this in-place... > >>>> > >>>> > >>>> Grant > >>>> > >>>> _______________________________________________ > >>>> RLUG mailing list > >>>> [email protected] > >>>> http://lists.rlug.org/mailman/listinfo/rlug > >>> > >>> _______________________________________________ > >>> RLUG mailing list > >>> [email protected] > >>> http://lists.rlug.org/mailman/listinfo/rlug > >>> > >> > >> > >> -- > >> If UNIX doesn't have the solution you have the wrong problem. > >> UNIX is simple, but it takes a genius to understand it's simplicity. > >> > >> _______________________________________________ > >> RLUG mailing list > >> [email protected] > >> http://lists.rlug.org/mailman/listinfo/rlug > >> > > > > _______________________________________________ > > RLUG mailing list > > [email protected] > > http://lists.rlug.org/mailman/listinfo/rlug > > > > _______________________________________________ > RLUG mailing list > [email protected] > http://lists.rlug.org/mailman/listinfo/rlug > _______________________________________________ RLUG mailing list [email protected] http://lists.rlug.org/mailman/listinfo/rlug
