help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: file filtering


From: HS
Subject: Re: file filtering
Date: 30 Jan 2007 08:58:18 -0800
User-agent: G2/1.0

Excuse me for saying that here, but do you really need/want to use 
elisp?
It seems much easier and "logical" to solve this problem - since it's 
a command-line script that will do some text processing - with Ruby, 
Python or Perl.
Cheers,
HS

On 30 jan, 12:34, Peter Tury <tury.pe...@gmail.com> wrote:
> Hi,
>
> I would like to write an emacs lisp script what (filters +) modifies a
> file logically in the following way:
>
> * processes the file content line by line
>
> * if line corresponds to a given regexp, then replaces the line by
>   something built up from found regexp-parts (\1...)
>
> * otherwise deletes the line
>
> I would like to use this script similarly to grep: so emacs would run
> in the backgroup (using --script initial option at Emacs invocation).
>
> For this I am looking for some functionalities/functions what I don't
> know:
>
> * how to read a file without loading the whole file into memory
>   (i.e. e.g. without loading it into a buffer)
>
> E.g. I thought of a solution when I would read from the file only
> strings what correspond to a given regexp. Something like
> (insert-file-contents filename regexp). (In the "simpliest" case
> regexp would be "^.*$".) Is this possible?
>
> Then, the second step would be to replace the just inserted text, so
> something like the following would be even better
> (insert-file-contents filename regexp replace-match-first-arg): this
> would find the regexp in filename, replace the found string according
> to replace-match (in memory) and insert only the result into the buffer.
>
> Then (after a while loop what processes the whole file), the third
> step would be to write the result into a new file, so the best would
> be something like this :-) (append-to-file to-filename from-filename
> regexp-to-read replace-match-first-arg-to-append)
>
> I think I could create these functions if I would know how to read a
> portion (not fixed number of chars!) of a file...
>
> My problem is this: if I work on buffers (instead of files), I have to
> create two buffers: one that corresponds to the original file and one
> that corresponds to the result file -- or otherwise I have to delete
> those portions of the first buffer what didn't matched by the regexp
> searches -- and I don't know how to do it simply :-( Or using two
> buffers (strings??) (and storing the two files in them) for such a
> task isn't an ugly solution?
>
> How to solve this task in the simpliest way?
>
> Thanks,
> P



reply via email to

[Prev in Thread] Current Thread [Next in Thread]